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