表distributor_requisition_items
包含以下列:requisition_id
,product_id
,measuring_unit_id
,quantity
在模型DistributorRequisition.php
中,我有:
class DistributorRequisition extends Model
{
public function items()
{
return $this->belongsToMany('App\Product','distributor_requisition_items',
'requisition_id','product_id')->withPivot('measuring_unit_id','quantity');
}
}
在控制器中我有:
class CurrentInventoryController extends Controller
{
public function distributor_inventory(Request $request)
{
$distributor_requisition=DistributorRequisition::get();
$distributor_requisitions_all= $distributor_requisition->items;
// this line produces an error
return view('admin.current_inventory.distributor-inventory',
compact('distributor_requisitions_all','stores',.....));
}
}
在distributor-inventory.blade.php
中,我有:
@foreach($distributor_requisitions_all as $aP)
{{$aP->items->measuring_unit_id}}
@endforeach
我收到以下错误:
Collection.php第1527行中的异常:此集合实例上不存在属性[items]。
在Collection.php第1527行的Collection-> __ get('items')在CurrentInventoryController.php第64行
控制器中的第64行有:
$distributor_requisitions_all= $distributor_requisition->items;
那么如何在控制器中使用eloquent模型方法items
,以便我可以访问视图中的distributor_requisitions_all
变量来从中提取值?
答案 0 :(得分:0)
$distributor_requisition=DistributorRequisition::get();
是Model DistributorRequisition的集合,而items是模型中的一个方法,这就是为什么它会给你一个错误..你不能直接从集合中调用Model方法..并且解决你的问题你需要做的是
在您的函数中
public function distributor_inventory(Request $request)
{
$distributor_requisition=DistributorRequisition::get();
return view('admin.current_inventory.distributor-inventory',
compact('distributor_requisition','stores',.....));
}
并在您的视图中
@foreach($distributor_requisition as $aP)
// {{ $aP->items->measuring_unit_id }}
// that will give you error since $aP->items is another collection of many model item what you can do is add another loop
@foreach($aP->items as $item)
$item->pivot->measuring_unit_id }}
@endforeach
@endforeach
答案 1 :(得分:0)
使用with()方法而不是get()。
public function distributor_inventory(Request $request)
{
$distributor_requisition=DistributorRequisition::with('items');
return view('admin.current_inventory.distributor-inventory', ['distributor_requisitions_all' => $distributor_requisition]);
}