2

为什么 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 列与另一列混淆了。谢谢大家的帮助:)

4

2 回答 2

0

我认为您应该在订购结果之前进行分组。

$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();
于 2016-07-10T22:32:37.123 回答
0
$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 不知道您使用 as 为该字段提供的名称。

于 2016-07-10T22:45:48.440 回答