377 Stimmen

Laravel - Eloquent oder Fluent zufällige Zeile

Wie kann ich eine zufällige Zeile mit Eloquent oder Fluent in Laravel Framework auswählen?

Ich weiß, dass man mit SQL eine Bestellung nach RAND() durchführen kann. Ich möchte jedoch die zufällige Zeile erhalten ohne eine Zählung der Anzahl der Datensätze vor der ersten Abfrage vorzunehmen.

Irgendwelche Ideen?

19voto

Teodor Talov Punkte 1933

En Laravel 4 und 5 die order_by wird ersetzt durch orderBy

So sollte es sein:

User::orderBy(DB::raw('RAND()'))->get();

11voto

Manuel Azar Punkte 843

Für Laravel 5.2 >=

die Eloquent-Methode verwenden:

inRandomOrder()

Die Methode inRandomOrder kann verwendet werden, um die Abfrageergebnisse zufällig zu sortieren. Sie können diese Methode zum Beispiel verwenden, um einen zufälligen Benutzer abzurufen:

$randomUser = DB::table('users')
            ->inRandomOrder()
            ->first();

aus den Dokumenten: https://laravel.com/docs/5.2/queries#ordering-grouping-limit-and-offset

9voto

Bilal Gultekin Punkte 4571

Sie können auch order_by-Methode mit fließend und eloquent wie zu verwenden:

Posts::where_status(1)->order_by(DB::raw(''),DB::raw('RAND()')); 

Dies ist eine etwas seltsame Anwendung, aber sie funktioniert.

Edit: Wie @Alex sagte, ist diese Verwendung sauberer und funktioniert auch:

Posts::where_status(1)->order_by(DB::raw('RAND()'));

4voto

hosein azimi Punkte 321

Sie können diesen Befehl einfach verwenden:

// Frage: Name des Modells
// entnehme 10 Zeilen aus DB In shuffle records...

$questions = Question::orderByRaw('RAND()')->take(10)->get();

4voto

Kamlesh Paul Punkte 11555

Laravel-Funktion verwenden

ModelName::inRandomOrder()->first();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X