画像のパスをデータベースに保存したい。Controllerのコードは以下のようになっています。
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());
}
以下のようなエラーが発生します。ErrorException in RegistersUsers.php line 40:Creating default object from empty value .
画像はpublicフォルダに保存されていますが、画像のパスをユーザーテーブルのデータベースに保存することができません。
Schema::create('users', function (Blueprint $table) { 。 $table->increments('user_id')となります。 $table->string('name'); $table->string('image'); $table->rememberToken()です。 $table->timestamps();
データベースのuserテーブルに画像のパスを格納するには?
変数$user
を初期化していないので、コントローラで、使用する前に$user = new User;
を追加しなければなりません。
または、`$user = new ″App\User″を追加しなければなりません。
**更新してください。
既存のユーザーレコードを更新しようとしている場合、$user
変数を初期化しなければなりません。
$user_id = $request->input('user_id');
$user = User::find($user_id);
以下の簡単な方法をご利用ください。
$user = User::where('id', '=', $id)->first(); // where id is method param from url or request object
$user->save();
この方法は、サブテーブルのIDが外部キーを持ち、更新プロセスで明示的に定義する必要がある複数のテーブルを更新する場合にも簡単です。
また、$user = User::find($id);
は、$id
がそのオブジェクトテーブルの主キーである場合には、通常動作します。