sql >> Base de Datos >  >> RDS >> Mysql

Conteo distinto de Laravel 5.3, usando elocuente en lugar de Query Builder

La consulta que realiza no es correcta para el caso de uso, puede ver la diferencia.

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;

devolverá dos filas

aggregate
1,
2

Eloquent elige primero y devuelve 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;

devolverá filas como

agrregate
2,
1

Elocuente resultará 2 en este caso.

Lo que quieres es el recuento de (consulta) que volverá a ser 2.

¿Conseguirlo? lo que quieres es DISTINTO

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