Abfragen der aktuellsten Datensätze mit Laravel Eloquent
Um den neuesten Datensatz für jeden eindeutigen Wert in einer bestimmten Tabellenspalte abzurufen, nutzt Laravel's Eloquent ORM bietet eine robuste Lösung. Lassen Sie uns ein Szenario und seine aussagekräftige Lösung durchgehen:
Szenario:
Betrachten Sie eine Tabelle mit dem Namen „snapshot“ mit Spalten wie „id“, „seller_id“, „ Menge“ und „created_at“. Das Ziel besteht darin, die aktuellste Zeile für jede eindeutige „seller_id“ abzurufen.
Eloquente Abfrage:
$latestSales = Snapshot::select('seller_id') ->groupBy('seller_id') ->havingRaw('MAX(created_at)') ->orderBy('created_at', 'DESC') ->get();
Erläuterung:
Alternative Abfrage (Rohabfrage):
Falls bevorzugt, Eine reine SQL-Abfrage kann verwendet werden, um das gleiche Ergebnis zu erzielen:
SELECT * FROM snapshot WHERE (seller_id, created_at) IN ( SELECT seller_id, MAX(created_at) AS max_created_at FROM snapshot GROUP BY seller_id ) ORDER BY created_at DESC;
Diese Abfrage identifiziert jeweils die neueste Zeile „seller_id“ mithilfe einer Unterabfrage, um den maximalen „created_at“-Wert innerhalb jeder Gruppe zu ermitteln. Zeilen mit übereinstimmenden Paaren aus „seller_id“ und „created_at“ (die die neuesten Datensätze darstellen) werden dann ausgewählt und in absteigender Reihenfolge nach „created_at“ sortiert, was zu einer Liste der neuesten Datensätze für jeden Verkäufer führt.
Das obige ist der detaillierte Inhalt vonWie rufe ich den neuesten Datensatz für jeden eindeutigen Wert in Laravel Eloquent ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!