[英]Laravel query builder order by doesn't work with left join
为什么orderBy不起作用,它不是由nbr_votes按降序排序的?
$all_players = DB::table('example_players')->leftJoin('example_votes', 'example_votes.from_player_id', '=', 'example_players.id')
->select('example_players.id', 'example_players.name', 'example_players.display_name', 'example_players.role', 'example_players.picture', DB::raw("sum(case example_votes.vote when 'like' then 1 else 0 end) as nbr_votes"))
->orderBy('nbr_votes', 'desc')
->groupBy('example_players.id')
->get();
编辑问题解决了我将列from_player_id与另一个混淆。 感谢您的帮助:)
我认为你应该在订购结果之前进行分组。
$all_players = DB::table('example_players')->leftJoin('example_votes', 'example_votes.from_player_id', '=', 'example_players.id')
->select('example_players.id', 'example_players.name', 'example_players.display_name', 'example_players.role', 'example_players.picture', DB::raw("count(example_votes.id) as nbr_votes"))
->groupBy('example_players.id')
->orderBy('nbr_votes', 'desc')
->get();
$all_players = DB::table('example_players')->leftJoin('example_votes', 'example_votes.from_player_id', '=', 'example_players.id')
->select('example_players.id', 'example_players.name', 'example_players.display_name', 'example_players.role', 'example_players.picture', DB::raw("count(example_votes.id) as nbr_votes"))
->groupBy('example_players.id')
->orderBy(DB::raw("count(examples_votes.id)"),'desc')
->get();
这是因为orderby不知道你用字段给出的名字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.