laravel-5.4 - erreur :Creating default object from empty value
Je veux stocker le chemin de l'image dans la base de données. Mon code de Contrôleur en vertu devendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php
suit:
public function register(Request $request)
{
$this->validator($request->all())->validate();
if($request->hasFile('image')) {
$image_name = $request->file('image')->getClientOriginalName();
$image_path = $request->file('image')->store('public');
$user->image = Storage::url($image_name);
$user->save();
}
event(new Registered($user = $this->create($request->all())));
//$this->guard()->login($user); disable autologin for new users
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}
J'obtiens l'erreur suivante: ErrorException dans RegistersUsers.php ligne 40: Creating default object from empty value .
L'image est sauvés dans le dossier public, mais pas en mesure d'enregistrer le chemin de l'image dans la table user de la base de données. schéma de la table utilisateur
Schema::create('users', function (Blueprint $table) {
$table->increments('user_id');
$table->string('name');
$table->string('image');
$table->rememberToken();
$table->timestamps();
la façon de procéder pour stocker le chemin de l'image dans la table user de la base de données
- comment mettre en place votre
create
méthode?
Vous devez vous connecter pour publier un commentaire.
vous n'avez pas initialisé la variable
$user
donc dans le contrôleur, et avant d'utiliser ce que vous avez à ajouter$user = new User;
en supposant que vous avez déjàuse App\User;
ou
$user = new \App\User;
si vous ne le faites pas.Mise à jour
si vous essayez de mettre à jour un enregistrement d'utilisateur que vous avez pour initialiser le
$user
variable en sélectionnant sur la base de sa clé primaire qui doit être envoyé dans la requête et ensuite de faire l'initialisation comme:use App\User;
n code déjà. Je n'ai pas à faire$user =new User;
n code, parce que cette fonction publique, inscrivez-> Gérer une demande d'inscription pour l'application. signifie j'ai déjà le nom d'utilisateur et de l'image enregistrée et de faire la validation.$this->validator($request->all())->validate();
. si je fais $utilisateur =new Utilisateur , puis je vais être l'insertion d'une nouvelle valeur à l'utilisateur. dans la base de données j'ai une entrée pour l'image de ce qui est maintenant "C:\xampp\tmp\php469E.tmp". Mon besoin est de mettre à jour le tmp chemin d'accès au dossier public de chemin.register
fonction du champ d'application il n'y a pas de variable$user
il n'est donc pas défini. Essayez de mettre à jour un enregistrement d'utilisateur ?Utiliser de la manière la plus simple ci-dessous:
C'est aussi plus facile lors de la mise à jour de plusieurs tables où l'id dans la sous-tables ont les clés étrangères et doivent être explicitement définies dans le processus de mise à jour.
Aussi
$user = User::find($id);
normalement de travail où le$id
est la clé primaire de la table des objets