De query die u maakt, is niet correct voor gebruik, u kunt het verschil zien.
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;
geeft twee rijen terug
aggregate
1,
2
Welsprekend kiest eerst en keert terug, dat is 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;
zal rijen retourneren als
agrregate
2,
1
Welsprekend zal in dit geval 2 opleveren.
Wat je wilt is het aantal (query) dat weer 2 zal zijn.
Het krijgen? wat je wilt is DISTINCT
$usersWithAnswersCount = GameResult::where([
'school_id' => null,
'season_id' => $this->season->id
])
->distinct('user_id')
->count();