编程语言
首页 > 编程语言> > php – 此集合实例上不存在属性[title]

php – 此集合实例上不存在属性[title]

作者:互联网

我正在关注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

我得到的错误是:

Property [title] does not exist on this collection instance. (View: E:\laragon\www\newsite\resources\views\about.blade.php)

但是如果我在控制器文件中更改检索方法,它就可以工作.

public function index()
{
    $about = Page::find(3);

    return view('about', compact('about'));
}

当我在第一种情况下使用dd($about)(其中() – > get())时,数据被数组封装.在第二种情况下(find(3)),它按预期显示数据.

我究竟做错了什么?

解决方法:

当你使用get()时,你会得到一个集合.在这种情况下,您需要迭代它以获取属性:

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

或者你可以通过它的索引得到一个对象:

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

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

{{ $collection->first() }}

当您使用find()或first()时,您将获得一个对象,因此您可以使用简单的方法获取属性:

{{ $object->title }}

标签:php,laravel,laravel-eloquent
来源: https://codeday.me/bug/20190915/1805327.html