Twoje zapytanie nie jest poprawne dla przypadku użycia, widać różnicę.
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;
zwróci dwa wiersze
aggregate
1,
2
Elokwentny wybór jako pierwszy i zwrot, który wynosi 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;
zwróci wiersze jako
agrregate
2,
1
W tym przypadku wynik „Eloquent” będzie równy 2.
To, czego chcesz, to liczba (zapytanie), która ponownie będzie wynosić 2.
Dostajesz to? to, czego chcesz, to DISTINCT
$usersWithAnswersCount = GameResult::where([
'school_id' => null,
'season_id' => $this->season->id
])
->distinct('user_id')
->count();