该集合实例上不存在属性[title]。拉拉韦尔5.5

时间:2018-09-11 06:02:33

标签: php laravel laravel-5

我正在从23分钟到26分钟的时间里https://www.youtube.com/watch?v=9y6Swfb8EAM&list=PL9fcHFJHtFaai-ch9icvQOU69XzsKJJtD&index=11

我正在尝试使用控制器文件中的以下代码传递数据以进行查看:

public function show(Post $post)
{
    $post = Post::find($post);
    return view('posts.show', compact('post'));
}

当我尝试显示如下所示的代码时,(这是show.blade.php)

<h2>{{$post->title}}</h2>
<p>{{$post->body}}</p>

Property [title] does not exist on this collection instance. (View: E:\xampp\htdocs\lweb2\resources\views\posts\show.blade.php)

1 个答案:

答案 0 :(得分:4)

  

Laravel自动解析在路由或控制器操作中定义的口才模型,其类型提示的变量名称与路由段名称匹配

在这种情况下,您无需使用find(),因为Implicit model binding

,Laravel应自动为您解析模型。

尝试:

public function show(Post $post)
{
    return view('posts.show', compact('post'));
}

find()引起此问题的原因是因为Eloquent模型实现了Arrayable接口,这将导致find()方法假定您尝试查找多个对象。模型,最终将返回一个集合。