Heim > Artikel > Backend-Entwicklung > Wie wähle ich zufällige Zeilen in Laravel mit Eloquent und Fluent aus?
Zufällige Zeilen in Laravel mit Eloquent und Fluent auswählen
Bei der Arbeit mit großen Datensätzen ist es oft notwendig, zufällige Zeilen aus der Datenbank abzurufen ohne eine vorbereitende Zählung durchführen zu müssen. Laravel bietet mehrere Optionen, um dies mithilfe von Eloquent- und Fluent-Schnittstellen zu erreichen.
Eloquent
Laravel 5.2 und höher bietet die inRandomOrder()-Methode:
User::inRandomOrder()->get();
Diese Methode gibt eine Sammlung aller zufälligen Zeilen aus dem angegebenen Modell zurück. Um die Anzahl der abgerufenen Zeilen zu begrenzen, verwenden Sie die limit()-Methode:
User::inRandomOrder()->limit(5)->get();
Um eine einzelne zufällige Zeile abzurufen, verwenden Sie die first()-Methode:
User::inRandomOrder()->first();
Für ältere Versionen von Laravel (4.2.7 - 5.1) können Sie die Methode orderByRaw() verwenden:
User::orderByRaw("RAND()")->get();
Für Laravel-Versionen 4.0 - 4.2.6, verwenden Sie:
User::orderBy(DB::raw('RAND()'))->get();
Fluent
In Versionen von Laravel vor 5.2 wurde die Methode order_by() mit DB::raw( verwendet ) Hilfsfunktion:
User::order_by(DB::raw('RAND()'))->get();
Zusätzlich Überlegungen
Es ist wichtig zu beachten, dass die orderBy()-Methode derzeit keine anderen Argumente als ASC oder DESC zulässt. Daher ist es notwendig, die Methode orderByRaw() oder die Methode inRandomOrder() zum Auswählen zufälliger Zeilen zu verwenden.
Überlegungen zur Leistung
Beim Abrufen einer großen Anzahl von Zeilen ist dies der Fall Es ist wichtig, die Auswirkungen auf die Leistung zu berücksichtigen. Die Verwendung der inRandomOrder()-Methode kann effizienter sein als die Verwendung der orderByRaw()-Methode, da keine zusätzliche Unterabfrage zum Generieren einer zufälligen Reihenfolge erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie wähle ich zufällige Zeilen in Laravel mit Eloquent und Fluent aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!