[英]Laravel Eloquent order by sum with where
我有桌子:
user
id
name
battles
user1_id
user2_id
vote1
vote2
users
id
name
我想通过总赢来获得用户订单,但是我找不到如何用Eloquent进行操作。
这是一个示例(这不起作用,仅用于说明):
User:orderBy(sum('battles.vote1', '>', 'battles.vote2'),'DESC')->get();
但是,如果表决2>表决1也需要工作。
所以基本上来说,如果我有:
Users :
id: 1, name: John
id: 2, name: Bob
id: 3, name: Max
Battles :
user1_id : 1, user2_id : 2, vote1 : 180, vote2 : 3
user1_id : 1, user2_id : 3, vote1 : 110, vote2 : 90
user1_id : 2, user2_id : 3, vote1 : 1, vote2 : 9
user1_id : 3, user2_id : 4, vote1 : 900, vote2 : 0
user1_id : 3, user2_id : 1, vote1 : 10, vote2 : 30
我想按此顺序返回一个用户集合:
约翰(3胜,战斗1,2,5)
最大(2胜,战斗3,4)
鲍勃(0胜利)
谢谢 !
用以下请求尝试求和:
通过user1获得胜利:
$wins1 = $this->user->battles->where('user1_id', $this->user->id)->sum('battles.vote1', '>', 'battles.vote2')->get();
通过user2获得胜利:
$wins2 = $this->user->battles->where('user2_id', $this->user->id)->sum('battles.vote1', '<', 'battles.vote2')->get();
并计算双方的用户胜利:
$total = $wins1 + $wins2;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.