繁体   English   中英

Laravel雄辩的顺序与哪里

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM