2017-04-19 9 views
1

イメージパスをデータベースに保存します。 vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php下の私のコントローラのコードは次のとおりです。laravel-5.4 - エラー:空の値からデフォルトオブジェクトを作成する

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()); 
} 

私は、次のエラーを取得しています:RegistersUsers.phpライン40でErrorExceptionを:空の値enter image description hereからデフォルトのオブジェクトを作成します。

イメージはパブリックフォルダに保存されていますが、イメージのパスをユーザーテーブルデータベースに保存できません。あなたがコントローラで非常に変数$userを初期化していないデータベース

+0

どのように 'create'メソッドを実装しますか? – hassan

答えて

0

でuserテーブルのイメージのパスを格納するために続行する方法を
Schema::create('users', function (Blueprint $table) { $table->increments('user_id'); $table->string('name'); $table->string('image'); $table->rememberToken(); $table->timestamps();

ユーザテーブルのスキーマの前に追加しました、それを使用して既にuse App\User;

または$user = new \App\User;としている場合は、$user = new User;とします。

更新 あなたは、あなたがそれに基づいて選択することにより、$user変数を初期化するためにきた既存のユーザレコードを更新しようとしている場合は、要求で送信され、その後のような初期化を行うべきである主キーです

$user_id = $request->input('user_id'); 
$user = User::find($user_id); 
+0

彼はそれをlaravelユーザオブジェクトとして使っているので、 '$ user-> save();'を簡単に使うことができます。 –

+0

私は既に 'use App \ User;' nコードを持っています。このpublic関数register->アプリケーションの登録要求を処理するため、 '$ user = new User;' n codeを実行する必要はありません。 => $ this-> validator($ request-> all()) - > validate(); '。 $ user = new Userを実行すると、新しい値をユーザーに挿入します。データベースには、 "C:\ xampp \ tmp \ php469E.tmp"というイメージのエントリがあります。私の必要性は、パブリックフォルダパスにtmpパスを更新することです。 – dynamic

+0

'register'関数のスコープの中に変数' $ user'がありませんので、定義されていません。ユーザーレコードを更新しようとしていますか? –

関連する問題