Laravel雄辩的顺序,由相关模型的列总和(具有许多关系) [英] Laravel eloquent orderby related model's column sum (has Many Relationship)
本文介绍了Laravel雄辩的顺序,由相关模型的列总和(具有许多关系)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
需要一种解决方案,根据获胜的最大积分(获胜金额栏中的总和)列出用户.
用户和获胜两种模式.用户有很多奖金.
Need a solution to list user based on maximum credits won (sum of amount column in winnings) .
Two models User and Winning .
User has many winnings .
$top_scorers = User::with('winnings')->orderBy("sum of amount column in all winnings")
推荐答案
如果采用其他方法,则更容易:
It's easier if you go at it the other way around:
$usersByWinnings = Winning::with('user')
->select('user_id', \DB::raw('SUM(amount) as winnings'))
->groupBy('user_id')
->orderBy('winnings', 'DESC')
->get()->map(function (Winning $winning) {
return $winning->user;
});
或者,您也可以进行后处理sortBy
Alternatively you can do a post-processing sortBy
$top_scorers = User::with('winnings')->get()
->sortByDesc(function (User $user) {
return $user->winnings->sum('amount');
});
这篇关于Laravel雄辩的顺序,由相关模型的列总和(具有许多关系)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文