Estou acompanhando os vídeos do Laracasts: Basic Model / Controller / View Workflow .
Eu tenho uma tabela contém informações de contato.
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
Estou tentando passar dados para visualização usando o seguinte código no arquivo do controlador:
public function index()
{
$about = Page::where('page', 'about-me')->get(); //id = 3
return view('about', compact('about'));
}
Quando tento mostrar o código conforme mostrado abaixo,
@section('title')
{{$about->title}}
@stop
@section('content')
{!! $about->content !!}
@stop
Recebo um erro que diz:
A propriedade [título] não existe nesta instância de coleção. (Visualização: E: \ laragon \ www \ newsite \ resources \ views \ about.blade.php)
Mas se eu alterar o método de recuperação no arquivo do controlador, ele funciona.
public function index()
{
$about = Page::find(3);
return view('about', compact('about'));
}
Quando eu uso dd($about)
no primeiro case ( where()->get()
), os dados são encapsulados por um array. No segundo caso ( find(3)
), ele exibe os dados conforme o esperado.
O que estou fazendo errado?
fonte
Com o
get()
método você obtém uma coleção (todos os dados que correspondem à consulta), tente usar emfirst()
vez disso, ele retorna apenas um elemento, como este:$about = Page::where('page', 'about-me')->first();
fonte
$about = DB::where('page', 'about-me')->first();
em vez de
get()
.Funciona no meu projeto . Obrigado.
fonte
Você deve usar a palavra-chave Collection no Controller. Como aqui..
public function ApiView(){ return User::collection(Profile::all()); }
Aqui, o usuário é o nome do recurso e o perfil é o nome do modelo. Obrigado.
fonte
Uma pessoa pode obter isso enquanto trabalha com funções de fábrica, então posso confirmar que esta é a sintaxe válida:
$user = factory(User::class, 1)->create()->first();
Você pode ver o erro de instância da coleção se fizer algo como:
$user = factory(User::class, 1)->create()->id;
então mude para:
$user = factory(User::class, 1)->create()->first()->id;
fonte
$about->first()->id
ou$stm->first()->title
e seu problema está resolvido.fonte