Laravel 6.2无法获取从数据库检索的数据的属性

时间:2019-12-03 20:43:41

标签: php mysql laravel laravel-6.2

我对在Laravel中显示数据库中的数据有疑问。 我收到以下错误:

  

试图获取非对象的属性“ first_name”

它指的是这一行代码:

 @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的“编辑”功能)正常工作,如下所述:

public function edit($id)
{
    $contact = Contact::find($id);

    return view('contacts.edit', compact('contact'));
}

任何帮助将不胜感激,我想知道为什么它在我的“编辑”功能时不能用于我的“显示”功能,我有什么不知道的区别吗?

谢谢!

亲切的问候,

Geert-Jan Knapen

1 个答案:

答案 0 :(得分:1)

很有可能$contactobject而不是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'));
}