Je veux stocker le chemin de l'image dans la base de données. Mon code de contrôleur sous vendor\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: création d'un objet par défaut à partir d'une valeur vide .
L'image est enregistrée dans le dossier public mais ne peut pas enregistrer le chemin de l'image dans la base de données de la table utilisateur. schéma de la table utilisateurSchema::create('users', function (Blueprint $table) { $table->increments('user_id'); $table->string('name'); $table->string('image'); $table->rememberToken(); $table->timestamps();
comment procéder pour stocker le chemin de l'image dans la table utilisateur dans la base de données
vous n'avez pas initialisé la variable $user
donc dans le contrôleur et avant de l'utiliser, vous devez 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.
pdate si vous essayez de mettre à jour un enregistrement utilisateur existant, vous devez initialiser le $user
variable en sélectionnant en fonction de sa clé primaire qui doit être envoyée dans la demande, puis en effectuant l'initialisation comme:
$user_id = $request->input('user_id');
$user = User::find($user_id);
Utilisez le moyen simple ci-dessous:
$user = User::where('id', '=', $id)->first(); // where id is method param from url or request object
$user->save();
Ceci est également plus facile lors de la mise à jour de plusieurs tables où les identifiants dans les sous-tables ont des clés étrangères et doivent être explicitement définis dans le processus de mise à jour.
De plus, $user = User::find($id);
fonctionne normalement où $id
Est la clé primaire de cette table d'objets