2016-11-23 23 views
1

當我嘗試更新與此代碼的模型:Laravel:BadMethodCallException消息'方法更新不存在'。

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

我得到的方法update不存在的錯誤。但是,如果我改變我的看法發送radio_show_id代替slug並嘗試更改代碼以這樣的事:

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

代碼的執行沒有任何錯誤。

讓我感到困惑的是,如果我在調用update方法的行之前執行類似return $mix;的操作,我會得到兩種方法的類似數據。

+2

with get()返回Collection()。不是模型。只需使用first()而不是get()在你的情況下 –

+0

謝謝..它的工作.. –

回答

0

由於shock_gone_wild在我的問題的評論部分中提出$mix = Mix::where('slug', $slug)->get();正在返回一個集合而不是一個模型。這是因爲Model::where()方法可以根據是否有符合設置條件的記錄返回零個,一個或多個記錄。

正如我建議我用$mix = Mix::where('slug', $slug)->first();來獲得滿足條件的第一條記錄。