Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Contagem distinta do Laravel 5.3, usando eloquente em vez do Query Builder


A consulta que você está fazendo não está correta para o caso de uso, você pode ver a diferença.
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;

retornará duas linhas
aggregate
1,
2

Eloquent escolhe primeiro e retorna que é 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;

retornará linhas como
agrregate
2,
1

Eloquente resultará 2 neste caso.

O que você quer é contagem de (consulta) que será novamente 2.

Conseguindo? o que você quer é DISTINTO
$usersWithAnswersCount = GameResult::where([
    'school_id' => null,
    'season_id' => $this->season->id 
])
->distinct('user_id')
->count();