簡體   English   中英

Laravel - 從 pivot 表中獲取附加列值

[英]Laravel - Get additional column value from pivot table

我有具有多對多關系的 Stores 和 Medicines 表。 使用attachsync可以很好地存儲和更新。 表結構如下所示。 我想檢索額外列(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM