복붙노트

속성 [title]이 (가)이 컬렉션 인스턴스에 없습니다.

PHP

속성 [title]이 (가)이 컬렉션 인스턴스에 없습니다.

Laracast의 비디오를 따르고 있습니다 : 기본 모델 / 컨트롤러 / 워크 플로우보기.

나는 테이블에 연락처 정보를 가지고있다.

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

나는 다음과 같은 오류 메시지를 받는다.

그러나 컨트롤러 파일에서 검색 방법을 변경하면 작동합니다.

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

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

첫 번째 경우 (dd ($ about)를 사용할 때 (where -> get ()) 데이터는 배열로 캡슐화됩니다. 두 번째 경우 (find (3))에는 예상대로 데이터가 표시됩니다.

내가 도대체 ​​뭘 잘못하고있는 겁니까?

해결법

  1. ==============================

    1.get ()을 사용할 때 컬렉션을 얻습니다. 이 경우 속성을 가져 오기 위해 반복해야합니다.

    get ()을 사용할 때 컬렉션을 얻습니다. 이 경우 속성을 가져 오기 위해 반복해야합니다.

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

    아니면 인덱스에 의해 객체 중 하나를 얻을 수 있습니다.

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

    또는 컬렉션에서 첫 번째 객체 가져 오기 :

    {{ $collection->first() }}
    

    find () 또는 first ()를 사용할 때 객체를 얻으면 간단하게 속성을 얻을 수 있습니다.

    {{ $object->title }}
    
  2. ==============================

    2.get () 메서드를 사용하면 컬렉션 (쿼리와 일치하는 모든 데이터)을 얻고 first ()를 대신 사용하려고하면 다음과 같이 하나의 요소 만 반환합니다.

    get () 메서드를 사용하면 컬렉션 (쿼리와 일치하는 모든 데이터)을 얻고 first ()를 대신 사용하려고하면 다음과 같이 하나의 요소 만 반환합니다.

     $about = Page::where('page', 'about-me')->first();
    
  3. from https://stackoverflow.com/questions/41366092/property-title-does-not-exist-on-this-collection-instance by cc-by-sa and MIT license