Laravel 5.5方法更新不存在

时间:2018-01-22 13:17:23

标签: laravel laravel-5.5

我正在尝试创建博客,但我一直收到此错误。

  

BadMethodCallException   方法更新不存在。

我正在尝试编辑帖子并更新数据库。

public function update(Request $request, Post $post)
{
    $posts = Post::Find($post);

    $posts->update($request->all());
}

3 个答案:

答案 0 :(得分:4)

直接做:

public function update(Request $request, Post $post) {

    $post->update($request->all());

}
如果路由被声明为:{p> $post已经是Post模型的实例:

Route::get('posts/update/{post}', 'PsotsController@update');

文档参考:route model binding

答案 1 :(得分:4)

您已经通过方法

接受了Post对象

而是做这样的事情

@Test

这样做

public function update(Request $request, Post $post)
{
    $posts = Post::Find($post);

    $posts->update($request->all());
}

原因,检查$ post对象是否为null可能是一件好事,但如果数据库中没有任何匹配项,laravel将抛出 ModelNotFoundException

这就是一个名为Route Model Binding的东西,如果你将设置保持为默认设置,laravel 5.5会为你做的事情,就像使用主键'id'一样。 你可以在这里阅读更多相关信息 https://laravel.com/docs/5.5/routing#route-model-binding

答案 2 :(得分:1)

$posts = Post::find($post->id);

find()仅接受primary id