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.