[英]Laravel - Get additional column value from pivot table
我有具有多对多关系的 Stores 和 Medicines 表。 使用attach
和sync
可以很好地存储和更新。 表结构如下所示。 我想检索额外列(expired)
的值。
store_id | medicine_id | expired
1 2 1
1 3 0
我还需要计算像这样过期的药物总数
两种型号都有withPivot('expired')
model 关系。
Controller
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
我试图这样计算城市:
@foreach($stores as $store)
{{ ($store->pivot->expired==1) }}
@endforeach
它给出 1 1. 我如何计算 Cetamols 过期的城市总数?
以下应该有效:
关系集合的Sum
:
$stores->sum('pivot.expired');
在查询生成器上Sum
:
Medicine::findOrFail($id)->stores()->sum('expired');
此外,您的 controller 代码目前没有多大意义,可以简化为:
public function show($id)
{
$medicine = Medicine::findOrFail($id);
$stores = $medicine->stores;
return view('medicines', compact('medicine', 'stores'));
}
我删除了对findOrFail()
的第二次调用并删除了get()
,因为它是不必要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.