2016-11-23 6 views
1

私はこのコードとモデル更新しようとすると:Laravel: 'Method update does not exist。'というメッセージが表示されるBadMethodCallException

public function updateMixedtape($slug, Request $request) 
{ 
    $mix = Mix::where('slug', $slug)->get(); 
    $mix->update($request->all()); 
    return redirect('dashboard/mixes'); 
} 

を私は方法updateが存在しないというエラーが出ます。しかし、私の代わりにslugradio_show_idを送信するために私の見解を変更して、このような何かにコードを変更しようとします

public function updateMixedtape(Request $request) 
{ 
    $mix = Mix::findOrFail($request->radio_show_id); 
    $mix->update($request->all()); 
    return redirect('dashboard/mixes'); 
} 

コード実行をエラーなし。

私が困ったのは、私がupdateメソッドと呼ばれる行の前にreturn $mix;のようなことをすると、私は両方の方法で同様のデータが得られるということです。

+2

get()でCollection()が返されます。モデルではありません。あなたのケースでget()の代わりにfirst()を使用してください –

+0

ありがとう..それは働いた.. –

答えて

0

shock_gone_wildが私の質問のコメントセクションに示唆しているように、$mix = Mix::where('slug', $slug)->get();はモデルではなくコレクションを返しています。これは、Model::where()メソッドが、設定された条件を満たすレコードがあるかどうかによって、ゼロ、1つまたは複数のレコードを返すことができるからです。

代わりに、$mix = Mix::where('slug', $slug)->first();を使用して、条件を満たす最初のレコードを取得しました。

関連する問題