Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erhalte ich zufällige Zeilen aus einer Datenbanktabelle in Laravel?

Wie erhalte ich zufällige Zeilen aus einer Datenbanktabelle in Laravel?

Barbara Streisand
Barbara StreisandOriginal
2024-11-21 16:14:10384Durchsuche

How do I get random rows from a database table in Laravel?

Zufällige Zeilen in Laravel abrufen

Um eine zufällige Zeile aus einer Datenbanktabelle mit dem Eloquent ORM oder Fluent Query Builder von Laravel abzurufen, gibt es mehrere Verfügbare Ansätze, abhängig von der Laravel-Version, die Sie verwenden.

Laravel 5.2 und höher

In Laravel 5.2 und späteren Versionen können Sie die inRandomOrder()-Methode verwenden:

$randomUser = User::inRandomOrder()->first();
$randomUsers = User::inRandomOrder()->take(5)->get();

Laravel 5.1 und früher

Vor Laravel 5.2 würden Sie zum Erreichen die reine SQL-Syntax verwenden Zufälligkeit:

$randomUser = User::orderByRaw("RAND()")->first();
$randomUsers = User::orderByRaw("RAND()")->take(5)->get();

Laravel 3

Verwenden Sie in Laravel 3 die Methode order_by() mit der Funktion DB::raw():

$randomUser = User::order_by(DB::raw("RAND()"))->first();
$randomUsers = User::order_by(DB::raw("RAND()"))->take(5)->get();

Sammlungen verwenden

Alternativ können Sie verwenden die Methoden random() oder random($count) von Collections, um ein zufälliges Element oder Array zufälliger Elemente zu erhalten:

$randomUser = User::all()->random();
$randomUsers = User::all()->random(10);

Überlegungen

In SQL ist die ORDER BY RAND() kann bei großen Tabellen ineffizient sein, da die Datenbank-Engine alle Datensätze sortieren muss. Für eine bessere Leistung sollten Sie alternative Ansätze wie Sampling oder Indizierung in Betracht ziehen.

Das obige ist der detaillierte Inhalt vonWie erhalte ich zufällige Zeilen aus einer Datenbanktabelle in Laravel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn