我正在从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)
答案 0 :(得分:4)
Laravel自动解析在路由或控制器操作中定义的口才模型,其类型提示的变量名称与路由段名称匹配
在这种情况下,您无需使用find()
,因为Implicit model binding
尝试:
public function show(Post $post)
{
return view('posts.show', compact('post'));
}
find()
引起此问题的原因是因为Eloquent模型实现了Arrayable
接口,这将导致find()
方法假定您尝试查找多个对象。模型,最终将返回一个集合。