我總是得到錯誤:
此集合實體上不存在屬性 [payment]。
但我已經雄辯了User:
public function payment() { return $this->hasMany(Payment::class); }
where當我使用and時它不起作用whereBetween。如果我這樣做的話聽起來不錯:
User::first()->payment->sum('amount')
修補程式示例:
$l = User::whereBetween('created_at', ['2022-02-20', '2022-02-28'])->with('payment')->get()
$l->payment->sum('amount')
我只需要 1 行不在陣列中的結果。因為我找到了表格頁腳的總數。
uj5u.com熱心網友回復:
嘗試這個
$l = User::whereBetween('created_at', ['2022-02-20', '2022-02-28'])->with('payment')->get();
$grandTotal = $l->map(function ($item) {
$item->total_amount = $item->payment->sum('amount');
return $item;
})->sum('total_amount');
uj5u.com熱心網友回復:
您可以通過下面提到的方式向關系添加條件
$users = User::whereBetween('created_at', [
'2022-02-20', '2022-02-28'
])->with(['payments'])
->get();
當您獲取多個用戶時,您需要遍歷回圈。這就是您的代碼中缺少的內容
$users = $users->map(function ($user) {
$user['total_payment'] = $user->payments->sum('amount');
return $user;
});
然后
$grandTotal = $users->sum('total_payment');
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/434992.html
