Laravel 6.2 无法获取从数据库检索到的 属性 数据
Laravel 6.2 can't get property of data retrieved from database
我有一个关于在 Laravel 中显示我的数据库中的数据的问题。
我收到以下错误:
Trying to get property 'first_name' of non-object
指的是这行代码:
@foreach ($contact as $c)
<h1 class="display-4">Bekijk details voor contact: {{ $c->first_name }} {{ $c->last_name }}</h1>
@endforeach
我使用 Laravel 的 'show' 函数从我的数据库中获取这些数据,如下所述:
public function show($id)
{
$contact = Contact::find($id);
return view('contacts.show', compact('contact'));
}
我的路线是这样的:
Route::resource('contacts', 'ContactController');
我无法解决这个错误的原因是因为它似乎适用于其他功能,例如 Laravel 的 'edit' 功能,如下所述:
public function edit($id)
{
$contact = Contact::find($id);
return view('contacts.edit', compact('contact'));
}
任何帮助将不胜感激,我想知道为什么它对我的 'show' 函数不起作用,而它对我的 'edit' 函数起作用,是否有任何我不知道的差异的?
提前致谢!
亲切的问候,
Geert-Jan Knapen
很有可能,$contact
是 object
而不是 collection
,所以你不需要循环遍历它。你可以直接访问它。
<h1 class="display-4">Bekijk details voor contact: {{ $contact ->first_name }} {{ $contact ->last_name }}</h1>
更新最好用route model binding
,所以如果联系人不存在就处理
public function show(Contact $contact)
{
return view('contacts.show', compact('contact'));
}
我有一个关于在 Laravel 中显示我的数据库中的数据的问题。 我收到以下错误:
Trying to get property 'first_name' of non-object
指的是这行代码:
@foreach ($contact as $c)
<h1 class="display-4">Bekijk details voor contact: {{ $c->first_name }} {{ $c->last_name }}</h1>
@endforeach
我使用 Laravel 的 'show' 函数从我的数据库中获取这些数据,如下所述:
public function show($id)
{
$contact = Contact::find($id);
return view('contacts.show', compact('contact'));
}
我的路线是这样的:
Route::resource('contacts', 'ContactController');
我无法解决这个错误的原因是因为它似乎适用于其他功能,例如 Laravel 的 'edit' 功能,如下所述:
public function edit($id)
{
$contact = Contact::find($id);
return view('contacts.edit', compact('contact'));
}
任何帮助将不胜感激,我想知道为什么它对我的 'show' 函数不起作用,而它对我的 'edit' 函数起作用,是否有任何我不知道的差异的?
提前致谢!
亲切的问候,
Geert-Jan Knapen
很有可能,$contact
是 object
而不是 collection
,所以你不需要循环遍历它。你可以直接访问它。
<h1 class="display-4">Bekijk details voor contact: {{ $contact ->first_name }} {{ $contact ->last_name }}</h1>
更新最好用route model binding
,所以如果联系人不存在就处理
public function show(Contact $contact)
{
return view('contacts.show', compact('contact'));
}