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?

1voto

Ich habe eine Tabelle mit Tausenden von Datensätzen, also brauche ich etwas Schnelles. Dies ist mein Code für pseudo-zufällige Zeile:

// count all rows with flag active = 1
$count = MyModel::where('active', '=', '1')->count(); 

// get random id
$random_id = rand(1, $count - 1);  

// get first record after random id
$data = MyModel::where('active', '=', '1')->where('id', '>', $random_id)->take(1)->first();

0voto

Probieren Sie diesen Code aus! Er funktioniert:

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

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