我有我的桌子:
user
id
name
battles
user1_id
user2_id
vote1
vote2
users
id
name
我希望通过总胜利获得用户订单,但我找不到如何使用Eloquent。
这是一个例子(这不起作用,只是为了说明):
User:orderBy(sum('battles.vote1', '>', 'battles.vote2'),'DESC')->get();
但如果投票2>它也需要工作。 vote1。
如果我有以下情况那么苛刻:
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)
Max(2胜,对战3,4)
鲍勃(0胜)谢谢!
答案 0 :(得分: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;