2016-07-10 14 views
1

なぜorderByが機能しないのですか?nbr_votesによって降順に並べ替えられません。Laravelクエリビルダの順序は、左結合では機能しません。

$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という列を別のものと混同していました。あなたの助けをありがとうすべて:

答えて

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(); 
+0

お返事ありがとうございます。しかし、私はすでにそれを試して、それは何かを変更しません。 – Alex1

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はあなたのようにして、フィールドに指定した名前を知らないからです。

+0

- > orderBy(DB :: raw( "count(overwatch_votes.id)")、 'desc')は、順序を変更しますが、overwatch_votes.id descではありません。 – Alex1

+0

クエリにoverwatch_votesテーブルが表示されないためです。まず、そのテーブルに参加して注文する必要があります。 – da1lbi3

+0

私は自分のコードを変更しました。 – da1lbi3

関連する問題