Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Laravel 5.3 Distinct Count unter Verwendung von Eloquent anstelle von Query Builder

Die von Ihnen gestellte Abfrage ist für den Anwendungsfall nicht korrekt, Sie können den Unterschied sehen.

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;

gibt zwei Zeilen zurück

aggregate
1,
2

Eloquent wählt zuerst und gibt zurück, was 1 ist.

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;

gibt Zeilen zurück als

agrregate
2,
1

Eloquent ergibt in diesem Fall 2.

Was Sie wollen, ist die Anzahl von (Abfrage), die wieder 2 sein wird.

Es bekommen? Was Sie wollen, ist DISTINCT

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