Heim >Datenbank >MySQL-Tutorial >Wie führt man Summenaggregationen mit GroupBy in Laravel Eloquent effizient durch?
Einführung:
Laravels Eloquent ORM bietet eine bequeme Möglichkeit, Daten aus einem abzurufen und zu bearbeiten Datenbank. Bei der Arbeit mit großen Datensätzen ist es notwendig, Daten zu gruppieren und Aggregationen wie Summen durchzuführen.
Problemstellung:
Der bereitgestellte Code versucht, die Summe von „no_of_pages“ gruppiert nach „users_editor_id“ zu berechnen unter Verwendung der sum()- und groupBy()-Methoden von Eloquent. Dieser Ansatz schlägt jedoch fehl, da sum() die Abfrage ausführt und das Ergebnis zurückgibt, bevor groupBy() angewendet werden kann.
Lösung:
Auflösen Um dieses Problem zu lösen, können wir eine Kombination aus den Methoden groupBy() und selectRaw() verwenden. Hier ist eine aktualisierte Lösung:
Document::groupBy('users_editor_id') ->selectRaw('sum(no_of_pages) as sum, users_editor_id') ->pluck('sum','users_editor_id');
Erklärung:
Alternative Lösung:
Ein anderer Ansatz besteht darin, die Methode selectRaw() zusammen mit get() zu verwenden, um eine Sammlung von Pseudo-ORM-Modellen zurückzugeben:
Document::groupBy('users_editor_id') ->selectRaw('*, sum(no_of_pages) as sum') ->get();
Diese Methode addiert die Summe Fügen Sie jedem resultierenden Modell eine Spalte hinzu, sodass Sie wie auf ein normales Modell darauf zugreifen können Eigenschaft.
Fazit:
Durch die Verwendung der Methoden groupBy(), selectRaw() und pluck() können wir Summenaggregationen mit Gruppierung in Laravel Eloquent effizient durchführen . Diese Techniken ermöglichen es uns, große Datensätze effektiv zu verarbeiten und wertvolle Erkenntnisse aus den Daten zu gewinnen.
Das obige ist der detaillierte Inhalt vonWie führt man Summenaggregationen mit GroupBy in Laravel Eloquent effizient durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!