Estoy siguiendo los videos de Laracasts: Modelo básico / Controlador / Ver flujo de trabajo .
Tengo una mesa con 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
Recibo 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 utilizo 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?
fuente
Con el
get()
método obtienes una colección (todos los datos que coinciden con la consulta), intenta usarfirst()
en su lugar, devuelve solo un elemento, como este:$about = Page::where('page', 'about-me')->first();
fuente
$about = DB::where('page', 'about-me')->first();
en lugar de
get()
.Funciona en mi proyecto . Gracias.
fuente
Debería utilizar la palabra clave Collection en Controller. Como aquí..
public function ApiView(){ return User::collection(Profile::all()); }
Aquí, el usuario es el nombre del recurso y el perfil es el nombre del modelo. Gracias.
fuente
Una persona puede obtener esto mientras trabaja con funciones de fábrica, por lo que puedo confirmar que esta es una sintaxis válida:
$user = factory(User::class, 1)->create()->first();
Es posible que vea el error de instancia de colección si hace algo como:
$user = factory(User::class, 1)->create()->id;
así que cámbialo a:
$user = factory(User::class, 1)->create()->first()->id;
fuente
$about->first()->id
o$stm->first()->title
y su problema está resuelto.fuente