Truy vấn bạn thực hiện không đúng với trường hợp sử dụng, bạn có thể thấy sự khác biệt.
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;
sẽ trả về hai hàng
aggregate
1,
2
Lượt chọn đầu tiên và lượt trả lại là 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;
sẽ trả về các hàng dưới dạng
agrregate
2,
1
Eloquent sẽ dẫn đến kết quả là 2 trong trường hợp này.
Những gì bạn muốn là số lượng (truy vấn) sẽ lại là 2.
Nhận được nó? những gì bạn muốn là DISTINCT
$usersWithAnswersCount = GameResult::where([
'school_id' => null,
'season_id' => $this->season->id
])
->distinct('user_id')
->count();