Laravel - 无法访问对象属性

时间:2017-03-20 10:57:19

标签: laravel laravel-5 eloquent

我有以下代码:

$items = Item::where('type','egg')
        ->select('id','name','image','description')
        ->with('craft.reqItem')->get();

foreach($items as $item) {
            if (sizeof($item->craft)) {
                foreach ($item->craft as $craftItem)
                    return $craftItem;
            }
        }

输出是以下JSON:

enter image description here

当我试图从代码中访问req_item时,laravel什么也没输出。 我试图改变:

return $craftItem

return $craftItem->req_item

如果我试图输出除req_item以外的任何其他属性(例如id,item_id,quantity) - laravel会返回正确的值。

知道为什么我无法访问req_item对象吗?

dd req_item

enter image description here

2 个答案:

答案 0 :(得分:0)

就是这样,$craftItem->reqItem是一个对象,你不能简单地“输出”一个对象。

但你可以做一些类似$craftItem->reqItem->req_item_id的事情(在你急切加载reqItem的情况下,假设它有关系)。

如果情况并非如此,那么您只需调用$craftItem->reqItem()->req_item_id

之类的查询即可

虽然我更喜欢急切的加载,这可能是你想要在文档中阅读...但只是为了测试你的例子是否正常工作,你可以在条件语句之前做$item->load('reqItem')之类的事情。然后您可以将其作为财产访问。

正如devk所提到的,关系必须以camelCase命名。为简单起见,您可能希望将其更改为reqItem()

答案 1 :(得分:-1)

尝试$ craftItem-> reqItem ['req_item_id'],可能会起作用

相关问题