Laravel雄辩的顺序,由相关模型的列总和(具有许多关系) [英] Laravel eloquent orderby related model's column sum (has Many Relationship)

查看:103
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆