我打算使用 get() 方法從 orderDetail 表中提取所有具有相同訂單 ID 的行,然后回圈將稅列的所有值添加到 $total_ 變數。然后我計劃將 $total_ 添加到賣家余額中。
我想獲取使用相同 order_id 提取的列中的稅值總和。我嘗試使用 sum() 但似乎仍然存在錯誤。唯一有效的是當我使用 first() 時,它只得到我的條件為真的第一行。但這樣一來,我只能使用一個稅值。在某些情況下,我有兩個具有相同 order_id 的商品(當我們在購物車中有不同的產品時)。它們以相同的 order_id 進入資料庫。所以,我現在正在尋找一種方法來提取具有相同 order_id 的所有行,然后獲取 tax 列的總和。
if ($request->status == 'cancelled' && $order->payment_status == 'paid') {
$commissionHistoriesnow = \App\Models\CommissionHistory::where('order_id', $request->order_id)->get();
$total__ = 0;
foreach ($commissionHistoriesnow as $key => $commissionHistorynow) {
if($commissionHistorynow->admin_commission != null) {
$total__ = $commissionHistorynow->admin_commission;
}
}
$seller = Seller::where('user_id', $commissionHistoriesnow->seller_id)->first();
$seller->admin_to_pay = $total__;
$seller->save();
}
uj5u.com熱心網友回復:
您可以使用sumBuilder 的方法為您獲取該列的總和,而無需檢索所有記錄并對其進行迭代:
$total = CommissionHistory::where('order_id', $request->order_id)
->sum('admin_commission');
額外的:
此外,您可以使用increment模型上的方法來增加“admin_to_pay”欄位并在資料庫中更新它(這會觸發模型事件):
$seller->increment('admin_to_pay', $total);
如果您不擔心事件并且在這種情況下只有一條記錄,您可以呼叫increment構建器本身來更新您要查詢的記錄:
Seller::where('user_id', $commissionHistoriesnow->seller_id)->increment('admin_to_pay', $total);
Laravel 8.x 檔案 - 查詢 - 運行資料庫查詢 - 聚合 sum
Laravel 8.x 檔案 - Eloquent - 檢索單個模型 / 聚合 - 檢索聚合 sum
Laravel 8.x 檔案 - 查詢 - 更新陳述句 - 增量和減量 increment
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/414202.html
標籤:
