Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel-从数据透视表中获取附加列值_Php_Laravel_Loops_Orm_Pivot Table - Fatal编程技术网

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'));
}