首页 > 解决方案 > 此集合实例上不存在属性 [id] - Laravel 6

问题描述

我正在尝试使用 foreach 将数据加载到表中,但出现错误

此集合实例上不存在属性 [id]。

我可能做错了什么?

响应如下所示:

{
   "id": 1,
   "name": "Apple",
   "messages": [
      {
         "id": 7,
         "received": 0
      }
   ]
}   

控制器

public function show()
{
    $items = Item::with('messages')->where('user_id', Auth::user()->id)->get();
    return view('home', compact('items'));
}

看法

@foreach($details as $detail)
    <td>{{ $details->messages->id }}</td>
@endforeach

标签: phplaravel

解决方案


看起来您在Item表上与表进行的连接会Messages在字段中返回一个列表messages。此处显示:

{"id":1,"name":"Apple""messages":[{"id":7,"received":0}]}  

注意[{"id":7,"received":0}].

要获取消息的单个 ID,您首先需要在messages列表中建立索引。或者您可以将查询更改为仅从每个项目中选择一条消息。


推荐阅读