Im Eloquent ORM von Laravel können Sie auf Szenarien stoßen, in denen Sie die neuesten Zeilen für jeden einzelnen Wert abrufen müssen in einer bestimmten Spalte. Dies kann durch eine Kombination aus Unterabfragen und Aggregationsfunktionen erreicht werden.
Stellen Sie sich ein Szenario vor, in dem Sie eine Datenbanktabelle haben, die die folgenden Spalten enthält:
id seller_id amount created_at
Angenommen, Sie möchten die aktuellste Version erhalten Datensatz für jede eindeutige seller_id. So können Sie dies mit einer unformatierten SQL-Abfrage erreichen:
<code class="sql">select s.* from snapshot s left join snapshot s1 on s.seller_id = s1.seller_id and s.created_at < s1.created_at where s1.seller_id is null
In dieser Abfrage verwenden wir einen Left-Join, um jeden Datensatz in der Snapshot-Tabelle (Alias s) mit allen anderen Datensätzen zu vergleichen, die dasselbe haben verkäufer_id. Anschließend verwenden wir die AND-Bedingung, um Datensätze herauszufiltern, bei denen s.created_at kleiner als s1.created_at ist. Schließlich fügen wir eine WHERE-Klausel ein, um alle Datensätze mit einer passenden seller_id in der rechten Tabelle (s1) auszuschließen und so effektiv den neuesten Datensatz für jede seller_id zu isolieren.
Um das gleiche Ergebnis mit dem Laravel-Abfrage-Builder zu erzielen, müssen Sie kann den folgenden Code ausführen:
<code class="php">DB::table('snapshot as s') ->select('s.*') ->leftJoin('snapshot as s1', function ($join) { $join->on('s.seller_id', '=', 's1.seller_id') ->whereRaw(DB::raw('s.created_at < s1.created_at')); }) ->whereNull('s1.seller_id') ->get();</code>
Dieser Abfrage-Builder-Ansatz spiegelt die Logik der Roh-SQL-Abfrage wider und kapselt sie in die fließende Oberfläche von Laravel. Es gibt eine Sammlung der neuesten Datensätze für jede einzelne in der Snapshot-Tabelle vorhandene Verkäufer-ID zurück.
Das obige ist der detaillierte Inhalt vonWie rufe ich mit Laravel Eloquent die neuesten Datensätze für jeden eindeutigen Wert in einer Spalte ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!