Laravel:BadMethodCallException,消息'方法更新不存在。'

时间:2016-11-23 15:20:55

标签: eloquent laravel-5.3

当我尝试使用此代码更新模型时:

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

代码执行时没有任何错误。

让我感到困惑的是,如果我在调用return $mix;方法的行之前执行update之类的操作,我会获得两种方法的类似数据。

1 个答案:

答案 0 :(得分:0)

正如shock_gone_wild在我的问题的评论部分中建议$mix = Mix::where('slug', $slug)->get();返回集合而不是模型。这是因为Model::where()方法可以返回零个,一个或多个记录,具体取决于是否有符合设置条件的记录。

根据建议,我使用$mix = Mix::where('slug', $slug)->first();来获取符合条件的第一条记录。