tag property not name exist does collection php laravel laravel-eloquent

php - name - property $key does not exist on this collection instance laravel



La propiedad[título] no existe en esta instancia de colección (4)

Estoy siguiendo los videos de Laracasts: Modelo básico / Controlador / Ver flujo de trabajo .

Tengo una tabla que contiene información de contacto.

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

Estoy tratando de pasar datos para ver usando el siguiente código en el archivo del controlador:

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

Cuando intento mostrar el código como se muestra a continuación,

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

Me sale un error que dice:

La propiedad [título] no existe en esta instancia de colección. (Ver: E: / laragon / www / newsite / resources / views / about.blade.php)

Pero si cambio el método de recuperación en el archivo del controlador, funciona.

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

Cuando uso dd($about) en el primer caso ( where()->get() ) los datos están encapsulados por una matriz. En el segundo caso ( find(3) ) muestra los datos como se esperaba.

¿Qué estoy haciendo mal?


Con el método get() obtienes una colección (todos los datos que coinciden con la consulta), intenta usar first() lugar, solo devuelve un elemento, como este:

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


Cuando usas get() obtienes una colección . En este caso, debe iterar sobre él para obtener propiedades:

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

O simplemente puede obtener uno de los objetos por su índice:

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

O obtenga el primer objeto de la colección:

{{ $collection->first() }}

Cuando usa find() o first() obtiene un objeto , por lo que puede obtener propiedades con simple:

{{ $object->title }}


Debe usar la palabra clave Collection en Controller. Como aquí..

public function ApiView(){ return User::collection(Profile::all()); }

Aquí, Usuario es Nombre de recurso y Perfil es Nombre de modelo. Gracias.


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

en lugar de get() .

Funciona en mi proyecto . Gracias.