sql >> データベース >  >> RDS >> Mysql

クエリビルダーの代わりに雄弁なものを使用したLaravel5.3の個別カウント

    作成したクエリはユースケースに対して正しくありません。違いがわかります。

    select count(*) as aggregate from game_results 
    where (school_id is null and season_id = '1') 
    group by user_id order by user_id asc;
    

    2行を返します

    aggregate
    1,
    2
    

    Eloquentが最初にピックし、1であるリターンを返します。

    select count(*) as aggregate from game_results 
    where (school_id is null and season_id = '1') 
    group by user_id order by user_id desc;
    

    行を次のように返します

    agrregate
    2,
    1
    

    この場合、Eloquentは2になります。

    必要なのは(クエリ)の数で、これも2になります。

    それを得る?必要なのはDISTINCT

    $usersWithAnswersCount = GameResult::where([
        'school_id' => null,
        'season_id' => $this->season->id 
    ])
    ->distinct('user_id')
    ->count();
    


    1. Laravel5の動的テーブルとモデル

    2. このクエリでページング(スキップ/テイク)機能を実装する

    3. Entity Framework:このコマンドに関連付けられた開いているDataReaderがすでにあります

    4. ojdbc14.jarとojdbc6.jar