Laravel 5.5方法更新不存在



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

BadMethodCallException 方法更新不存在。

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

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

您已经通过该方法接受了 Post 对象

而是做这样的事情

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

像这样做

public function update(Request $request, Post $post)
{  
    // you already have the Post object injected from the framework for you.
    // you can use the instance freely.
    $post->update($request->all());
}

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

这就是所谓的路由模型绑定,如果您将设置保留为默认值,就像使用主键"id"一样,laravel 5.5 会为您执行此操作。您可以在此阅读有关此内容的更多信息https://laravel.com/docs/5.5/routing#route-model-binding

直接执行:

public function update(Request $request, Post $post) {
    $post->update($request->all());
}

如果路由声明为Post$post已经是模型的实例:

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

文档参考:路由模型绑定

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

find()只接受primary id

最新更新