Php Laravel-从数据透视表中获取附加列值
我有多对多关系的商店和药品表。使用Php Laravel-从数据透视表中获取附加列值,php,laravel,loops,orm,pivot-table,Php,Laravel,Loops,Orm,Pivot Table,我有多对多关系的商店和药品表。使用attach和sync存储和更新工作正常。表结构如下所示。我想检索额外列的值(过期) 我还需要计算像这样过期的药品总数 两个模型都有与pivot('expired')模型关系 控制器 public function show($id) { $medicine = Medicine::findOrFail($id); $stores = $medicine->findorfail($id)->stores()->get();
attach
和sync
存储和更新工作正常。表结构如下所示。我想检索额外列的值(过期)
我还需要计算像这样过期的药品总数
两个模型都有与pivot('expired')
模型关系
控制器
public function show($id)
{
$medicine = Medicine::findOrFail($id);
$stores = $medicine->findorfail($id)->stores()->get();
return view ('medicines', compact('medicine', 'stores'));
}
查看
我可以用这个列出药物
@foreach ($stores as $store)
{{ $store->value('name') }}
{!! $store->pivot->expired == 1 ?
'Expired' : 'Not-Expired' !!}
<a href="{{ route('store', $store->id) }}">View</a>
@endforeach
它给出了1。如何计算已过期十六烷醇的城市总数?以下各项应适用: 关系集合上的Sum:
$stores->sum('pivot.expired');
查询生成器上的Sum:
Medicine::findOrFail($id)->stores()->sum('expired');
此外,您的控制器代码目前意义不大,可以简化为:
public function show($id)
{
$medicine = Medicine::findOrFail($id);
$stores = $medicine->stores;
return view('medicines', compact('medicine', 'stores'));
}
我删除了对findOrFail()
的第二个调用,并删除了get()
,因为它是不必要的
Medicine::findOrFail($id)->stores()->sum('expired');
public function show($id)
{
$medicine = Medicine::findOrFail($id);
$stores = $medicine->stores;
return view('medicines', compact('medicine', 'stores'));
}