我正在关注Laracasts的视频:基本模型/控制器/视图工作流程。
我的桌子上有联系方式。
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')); }
当我dd($about)在第一种情况下使用时,where()->get()数据被数组封装。在第二种情况下(find(3)),它按预期显示数据。
dd($about)
where()->get()
find(3)
我究竟做错了什么?
使用时,get()您会得到一个 收藏 。在这种情况下,您需要对其进行迭代以获取属性:
get()
@foreach ($collection as $object) {{ $object->title }} @endforeach
或者,您也可以通过索引获得对象之一:
{{ $collection[0]->title }}
或者从集合中获取第一个对象:
{{ $collection->first() }}
当您使用find()或first()获得 对象时 ,可以使用以下简单方法获取属性:
find()
first()
{{ $object->title }}