我正在关注 Laracasts 的视频: Basic Model/Controller/View Workflow 。
我有一张桌子,里面有联系信息。
CREATE TABLE `about` (
`id` int(10) UNSIGNED NOT NULL,
`title` varchar(500) COLLATE utf8_unicode_ci NOT NULL,
`content` text COLLATE utf8_unicode_ci,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
我正在尝试使用控制器文件中的以下代码传递数据以查看:
public function index()
{
$about = Page::where('page', 'about-me')->get(); //id = 3
return view('about', compact('about'));
}
当我尝试显示如下所示的代码时,
@section('title')
{{$about->title}}
@stop
@section('content')
{!! $about->content !!}
@stop
我收到错误消息:
此集合实例上不存在属性 [title]。 (查看:E:\laragon\www\newsite\resources\views\about.blade.php)
但是,如果我更改控制器文件中的检索方法,它就可以工作。
public function index()
{
$about = Page::find(3);
return view('about', compact('about'));
}
当我在第一种情况下( where()->get()
)使用 dd($about)
时,数据被一个数组封装。在第二种情况下( find(3)
)它按预期显示数据。
我究竟做错了什么?
原文由 zkanoca 发布,翻译遵循 CC BY-SA 4.0 许可协议
当你使用
get()
你会得到一个 collection 。在这种情况下,您需要对其进行迭代以获取属性:或者您可以通过它的索引获取对象之一:
或者从集合中获取第一个对象:
当您使用
find()
或first()
您会得到一个 object ,因此您可以通过简单的方式获得属性: