Mysql
 sql >> Base de données >  >> RDS >> Mysql

Laravel 5.3 compte distinct, en utilisant eloquent au lieu de Query Builder

La requête que vous faites n'est pas correcte pour le cas d'utilisation, vous pouvez voir la différence.

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;

renverra deux lignes

aggregate
1,
2

Eloquent choisit en premier et revient qui est 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;

renverra les lignes comme

agrregate
2,
1

Eloquent donnera le résultat 2 dans ce cas.

Ce que vous voulez est le nombre de (requête) qui sera à nouveau 2.

L'obtenir? ce que vous voulez est DISTINCT

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