Proprietà non esiste su questa istanza di raccolta

Sto seguendo i video di Laracasts: Basic Model / Controller / View Workflow .

Ho un tavolo in possesso di informazioni di contatto.

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 

Sto cercando di passare i dati per visualizzare utilizzando il seguente codice nel file del controller:

 public function index() { $about = Page::where('page', 'about-me')->get(); //id = 3 return view('about', compact('about')); } 

Quando provo a mostrare il codice come mostrato di seguito,

 @section('title') {{$about->title}} @stop @section('content') {!! $about->content !!} @stop 

Ottengo un errore che dice:

Proprietà [titolo] non esiste su questa istanza di raccolta. (Visualizza: E: \ laragon \ www \ newsite \ resources \ views \ about.blade.php)

Ma se cambio il metodo di recupero nel file del controller, funziona.

 public function index() { $about = Page::find(3); return view('about', compact('about')); } 

Quando uso dd($about) nel primo caso ( where()->get() ) i dati sono incapsulati da una matrice. Nel secondo caso ( find(3) ) visualizza i dati come previsto.

Che cosa sto facendo di sbagliato?

Quando usi get() ottieni una collezione . In questo caso è necessario iterare su di esso per ottenere le proprietà:

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

O potresti semplicemente ottenere uno degli oggetti dal suo indice:

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

Oppure ottieni il primo object dalla raccolta:

 {{ $collection->first() }} 

Quando si utilizza find() o first() si ottiene un object , quindi è ansible ottenere proprietà con semplici:

 {{ $object->title }} 

Con il metodo get() ottieni una collezione (tutti i dati che corrispondono alla query), prova ad usare first() , invece restituisce solo un elemento, come questo:

  $about = Page::where('page', 'about-me')->first();