2016-09-16 6 views
0

をアップロードしようとしたとき、私は、ユーザーが画像を投稿できるようにしたいが、私はこのエラーを取得:HasOneOrMany.phpライン221エラー私はlaravelプロジェクトに取り組んでいる画像

FatalThrowableError in HasOneOrMany.php line 221: Type error: Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() must be an instance of Illuminate\Database\Eloquent\Model, none given, called in my statuses controller.

は、ここに私ですステータスコントローラコード:私のユーザーモデルでは

class StatusController extends Controller { 
public function postStatus(Request $request){ 
    $this->validate($request, [ 
     'status' => 'required|max:250', 
     ]); 
     Auth::user()->statuses()->create([ 
      'body' => $request->input('status'), 
      ]); 

    if($request->hasFile('image')){ 
     $image = $request->file('image'); 
     $filename = Auth::user()->username . time() . "." . $image->getClientOriginalExtension(); 
     Image::make($image)->fit(300,300) 
      ->save(public_path("/uploads/images/" . $filename)); 


     $statuses = Auth::user()->statuses(); 
     $statuses->image = $filename; 
     $statuses->save(); 
    } 


    return redirect()->route('home')->with('info', 'Status posted.'); 
} 

私はこの

を持って
public function statuses() { 
    return $this->hasMany('App\Models\Status', 'user_id'); 
} 

何か提案してください?

+0

'$ statuses-> save()'行は、モデルが与えられることを期待しています。 '$ statuses-> save(StatusModelHere)' –

+0

お返事ありがとうございますが、私はlaravelにちょっと新しく、どのモデルを正確にそこに置くべきですか? –

答えて

1

あなたがこれを行うと:

$statuses = Auth::user()->statuses(); 

あなたはステータスのコレクションを取得します。

6行目:

$status = Auth::user()->statuses()->create([ 
    'body' => $request->input('status'), 
]); 

削除行16:

$statuses = Auth::user()->statuses(); //Remove this line 

と変更あなたがにあなたのコード行6.変更に新しい状態を作成したので、あなたはこれを実行する必要はありません。 :

$status->image = $filename; //Note we changed the var name to the created above. 
$status->save(); 
+0

何が起こったのか分かりませんが、実際にはうまくいっています。 –

+0

ハハハ。私は説明することができます: 'statuses() - > create()'を呼び出すと、新しい 'Status'が作成され、' $ status'変数に保存されます。調査目的のために、画像を割り当てる前に 'var_dump($ status)'を使い、割り当て後に 'var_dump($ status)'を使うと 'Status'が変わるのがわかります。その後、保存します。 –

+1

ええ、私は今、それはハハ、感謝、たくさんの男を得る。 –

関連する問題