我有以下代码:
$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:
当我试图从代码中访问req_item时,laravel什么也没输出。 我试图改变:
return $craftItem
:
return $craftItem->req_item
如果我试图输出除req_item以外的任何其他属性(例如id,item_id,quantity) - laravel会返回正确的值。
知道为什么我无法访问req_item
对象吗?
dd req_item
答案 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'],可能会起作用