Laravel Eloquent: Alle Zeilen mit dem Maximum „created_at“ abrufen
In Laravel entsteht eine häufige Anforderung, wenn Sie nur die neuesten Zeilen abrufen müssen Zeilen für jeden eindeutigen Wert in einer bestimmten Spalte. In einer Tabelle wie der bereitgestellten, in der jede Zeile einen Verkauf darstellt, möchten Sie möglicherweise den neuesten Verkauf für jeden Verkäufer abrufen.
Um dies mit Laravel Eloquent zu erreichen, besteht ein Ansatz darin, die bereitgestellte Abfrage zu ändern die Frage:
$sales = Snapshot::leftJoin('snapshot as s1', function ($join) { $join->on('s.seller_id', '=', 's1.seller_id') ->whereRaw('s.created_at < s1.created_at'); }) ->whereNull('s1.seller_id') ->get();
Diese Abfrage erreicht das gewünschte Ergebnis, indem sie einen linken Join zu einer Kopie der „Snapshot“-Tabelle mit dem Alias „s1“ einführt. Der Join wird basierend auf der Spalte „seller_id“ durchgeführt und enthält eine Bedingung, die die „created_at“-Werte vergleicht, um sicherzustellen, dass nur die neuesten Zeilen für jeden Verkäufer ausgewählt werden.
Die „whereNull“-Klausel garantiert dies für jeden Verkäufer gibt es keine nachfolgende Zeile mit einem größeren „created_at“-Wert. Dadurch werden die Zeilen mit dem maximalen „created_at“-Wert für jede eindeutige „seller_id“ identifiziert. Durch den Aufruf von „get()“ für die resultierende Abfrage wird ein Array aller neuesten Verkäufe, gruppiert nach Verkäufer, abgerufen.
Das obige ist der detaillierte Inhalt vonWie kann ich mit Laravel Eloquent nur die neuesten Zeilen für jede eindeutige Verkäufer-ID abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!