小编典典

该集合实例上不存在属性[title]

php

我正在关注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)),它按预期显示数据。

我究竟做错了什么?


阅读 329

收藏
2020-05-26

共1个答案

小编典典

使用时,get()您会得到一个 收藏 。在这种情况下,您需要对其进行迭代以获取属性:

@foreach ($collection as $object)
    {{ $object->title }}
@endforeach

或者,您也可以通过索引获得对象之一:

{{ $collection[0]->title }}

或者从集合中获取第一个对象:

{{ $collection->first() }}

当您使用find()first()获得 对象时 ,可以使用以下简单方法获取属性:

{{ $object->title }}
2020-05-26