我正在尝试在表格中显示供应商列表及其购买订单。
供应商模型
public function vendorPo()
{
return $this->hasMany('App\PurchasedOrder', 'vendor_id','vendor_id');
}
供应商控制器
public function vendor()
{
$vendorPo = Vendor::with('vendorPo')
->get()
->keyBy('id')
->groupBy('vendor_name');
$purchaseOrders = PurchasedOrder::all()->where('publish','=','1');
return view('backend.purchase-order.vendor', compact('purchaseOrders'))
->with('vendorPo', $vendorPo);
}
获取我的索引
@foreach ($vendorPo as $vendor => $vendor_list)
<tr>
<th colspan="7"
style="background-color: #F7F7F7"> {{ $vendor }}: ({{ $vendor_list->count() }} vendors)
</th>
</tr>
@foreach ($vendor_list as $key => $vendorPoList)
<tr>
<td>
{{ $vendorPoList->vendorPo->po_id}}
</td>
</tr>
@endforeach
@endforeach
如果我这样做
...
@foreach ($vendor_list as $key => $vendorPoList)
<tr>
<td>
{{ $vendorPoList}}
</td>
</tr>
@endforeach
...
如果我
...
<td>
{{ $vendorPoList->vendorPO->po_id}}}
</td>
...
结果是错误
Facade\Ignition\Exceptions\ViewException
Property [po_id] does not exist on this collection instance. (View:
请帮助我。谢谢!
答案 0 :(得分:0)
您会遇到此问题,因为您的vendorPO
关系是HasMany
关系。如果从这种关系中拉回记录,则结果始终是一个数组(即使只有一条记录),也总是由Eloquent转换为Collection
。
因此,$vendorPoList->vendorPO
是一个集合,并且在名为po_id
的集合上没有变量。
根据数据模型,您应该重新访问该关系,或者在@foreach
上进行$vendorPoList->vendorPO
。