Berechnung der Summe mit GroupBy in Laravel Eloquent
In Laravel bietet das Eloquent ORM eine leistungsstarke Möglichkeit, mit der Datenbank zu interagieren. Eine häufige Aufgabe besteht darin, die Summe einer Spalte zu berechnen und dabei nach einem bestimmten Feld zu gruppieren. Obwohl die Verwendung der sum()-Methode unkompliziert erscheint, kann sie aufgrund der Ausführungsreihenfolge zu Fehlern führen.
Falscher Ansatz
$this->data['no_of_pages'] = Document::sum('no_of_pages') ->groupBy('users_editor_id'); // Call to undefined method
Im obigen Code Die Methode „groupBy()“ wird nach der Methode „sum()“ aufgerufen, was einen Fehler verursacht, da „sum()“ die Abfrage ausführt und das Ergebnis zurückgibt, bevor „groupBy()“ ausgeführt werden kann angewendet.
Richtige Lösungen
Um die Summe mit groupBy korrekt zu berechnen, verwenden Sie die folgenden Ansätze:
Ansatz 1 (empfohlen)
Document::groupBy('users_editor_id') ->selectRaw('sum(no_of_pages) as sum, users_editor_id') ->pluck('sum', 'users_editor_id');
Diese Methode verwendet die Methode selectRaw(), um einen Alias für die berechnete Summe zu erstellen (Summe). Anschließend extrahiert die pluck()-Methode die Felder sum und users_editor_id und liefert ein assoziatives Array-Ergebnis.
Ansatz 2
Document::groupBy('users_editor_id') ->selectRaw('*, sum(no_of_pages) as sum') ->get();
Diese Methode erstellt ein Pseudo-ORM Ergebnis durch Hinzufügen eines Summenfelds zu jedem Dokumentmodell. Dies ist jedoch weniger wünschenswert, da das Ergebnis keine echte ORM-Sammlung ist.
Das obige ist der detaillierte Inhalt vonWie berechnet man die Summe mit GroupBy in Laravel Eloquent richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!