我有很多到很多关系的商店和药品桌。使用attach和sync可以很好地存储和更新。表的结构如下所示。我想检索额外列(expired)的值。
store_id | medicine_id | expired
1 2 1
1 3 0另外,我需要清点像这样过期的药品总数。

这两种模型都具有withPivot('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我试着像这样数数城市:
@foreach($stores as $store)
{{ ($store->pivot->expired==1) }}
@endforeach 它给出了11。我怎样才能统计出已经过期的全部城市呢?
发布于 2020-06-12 12:17:34
下列措施应能发挥作用:
关系集合上的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(),因为它是不必要的。
https://stackoverflow.com/questions/62343789
复制相似问题