Ich versuche, eine zufällige Zeile aus den oberen 30 Datensätze in einer Tabelle zu bekommen. Ich sortiere alle Datensätze von score
ersten und nehmen 30 Datensätze in einem Rahmen des beredten Modell:Laravel 5 - wie man eine zufällige Reihe von den ersten 30 Akten in beredten bekommt?
public function scopePopular($query, $d)
{
return $query->where('d', $d)->orderBy('score', 'desc')->take(30);
}
Dann wird in einem class
:
$cnt = Record::popular($d)->count();
if ($cnt == 0)
return;
$randIndex = rand(0, $cnt-1);
$record = Record::popular($d)->skip($randIndex)->take(1)->first();
return $record;
Aber wenn ich in php Handwerker basteln überprüfen, I festgestellt, dass Record::popular($d)->count();
wird alle Datensätze Nummer anstelle von 30 zurückgegeben. Wie kann ich dieses Problem beheben? Vielen Dank.
Danke, es funktioniert jetzt! –