속성 [제목]이(가) 이 컬렉션 인스턴스에 존재하지 않습니다.
Laracast의 비디오 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
다음과 같은 오류가 발생합니다.
속성 [제목]이(가) 이 컬렉션 인스턴스에 없습니다.(보기: E:\laragon\www\newsite\resources\views\about.blade.blade)를 선택합니다.
그러나 컨트롤러 파일에서 검색 방법을 변경하면 작동합니다.
public function index()
{
$about = Page::find(3);
return view('about', compact('about'));
}
사용할 때dd($about)첫 번째 경우(where()->get()) 데이터가 배열로 캡슐화됩니다.두 번째 경우(find(3))는 예상대로 데이터를 표시합니다.
내가 뭘 잘못하고 있지?
사용할 때get()컬렉션을 얻습니다.이 경우 속성을 가져오려면 이 항목을 반복해야 합니다.
@foreach ($collection as $object)
{{ $object->title }}
@endforeach
또는 인덱스로 오브젝트 중 하나를 얻을 수도 있습니다.
{{ $collection[0]->title }}
또는 컬렉션에서 첫 번째 개체를 가져옵니다.
{{ $collection->first() }}
사용할 때find()또는first()오브젝트를 얻을 수 있기 때문에 다음과 같은 간단한 방법으로 속성을 얻을 수 있습니다.
{{ $object->title }}
와 함께get()수집(쿼리와 일치하는 모든 데이터)을 가져오는 방법,first()대신 다음과 같은1개의 요소만 반환됩니다.
$about = Page::where('page', 'about-me')->first();
공장 출하 시 이 구문이 유효한지 확인할 수 있습니다.
$user = factory(User::class, 1)->create()->first();
다음과 같은 작업을 수행하면 수집 인스턴스 오류가 표시될 수 있습니다.
$user = factory(User::class, 1)->create()->id;
다음 항목으로 변경:
$user = factory(User::class, 1)->create()->first()->id;
$about = DB::where('page', 'about-me')->first();
대신해서 get().
제 프로젝트에서 효과가 있어요.감사합니다.
컨트롤러에서 Collection 키워드를 사용해야 합니다.여기처럼...
public function ApiView(){
return User::collection(Profile::all());
}
여기서 User는 Resource Name, Profile은 Model Name입니다.감사합니다.
$about->first()->id또는$stm->first()->title그러면 문제가 해결됩니다.
의 결과로서$about = Page::where('page', 'about-me')->get()라라벨 컬렉션으로 제목과 같은 특정 속성을 얻을 수 있습니다.pluck()방법은 https://laravel.com/docs/master/collections#method-pluck에서 설명하고 있습니다.
$titles = $about->pluck( 'title' )
@foreach($titles as $title)
{{ $title }}
@endforeach
에 저장되어 있는 정보는 수집 형식이기 때문에 루프하기만 하면 됩니다.
@if(count($about))
@foreach($about as $page)
{{$page->title}}
@endforeach
@endif
언급URL : https://stackoverflow.com/questions/41366092/property-title-does-not-exist-on-this-collection-instance
'source' 카테고리의 다른 글
| XAMPP에서 MariaDB를 v10.3으로 업그레이드하는 방법 (0) | 2022.09.19 |
|---|---|
| console.log(개체) 출력을 파일에 저장하는 방법 (0) | 2022.09.19 |
| Guzzle 5에서 잘못된 SSL 인증서 오류를 무시하는 방법 (0) | 2022.09.19 |
| TextView텍스트에 이미지를 추가하는 방법 (0) | 2022.09.19 |
| 클래스 예제의 콜어댑터를 작성할 수 없습니다.간단하죠. (0) | 2022.09.19 |