テーブルの上位30レコードからランダムな行を取得しようとしています。 Iソートすべてscore
によってレコードが最初の、そして説得力のモデルの範囲で30件のレコードを取る:Laravel 5 - どのように雄弁に最初の30レコードからランダムな行を取得するには?
public function scopePopular($query, $d)
{
return $query->where('d', $d)->orderBy('score', 'desc')->take(30);
}
を次に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;
しかし、私はPHPの職人ティンカーにチェック、I Record::popular($d)->count();
は30の代わりにすべてのレコード番号を返します。この問題を解決するにはどうすればよいですか?ありがとう。数の前にクエリを実行する前にcount()
おかげで、それが動作するようになりました! –