Eloquent と Fluent を使用した Laravel でのランダム行の選択
大規模なデータセットを扱う場合、多くの場合、データベースからランダムな行を取得する必要があります。準備カウントを実行する必要はありません。 Laravel は、Eloquent インターフェイスと Fluent インターフェイスの両方を使用してこれを実現するためのいくつかのオプションを提供します。
Eloquent
Laravel 5.2 以降では、inRandomOrder() メソッドが提供されます。
User::inRandomOrder()->get();
このメソッドは、指定されたモデルからすべてのランダムな行のコレクションを返します。取得する行数を制限するには、limit() メソッドを使用します。
User::inRandomOrder()->limit(5)->get();
単一のランダムな行を取得するには、first() メソッドを使用します。
User::inRandomOrder()->first();
古いバージョンの場合Laravel (4.2.7 - 5.1) の場合は、orderByRaw() メソッドを使用できます:
User::orderByRaw("RAND()")->get();
Laravel バージョン 4.0 - 4.2.6 の場合、次を使用します:
User::orderBy(DB::raw('RAND()'))->get();
Fluent
5.2 より前のバージョンの Laravel では、order_by() メソッドが DB::raw() ヘルパー関数とともに使用されていました。
User::order_by(DB::raw('RAND()'))->get();
追加考慮事項
orderBy() メソッドでは現在、ASC または DESC 以外の引数を使用できないことに注意することが重要です。したがって、ランダムな行を選択するには、orderByRaw() メソッドまたは inRandomOrder() メソッドを使用する必要があります。
パフォーマンスに関する考慮事項
多数の行を取得する場合、パフォーマンスへの影響を考慮することが重要です。 inRandomOrder() メソッドを使用すると、ランダムな順序を生成するために追加のサブクエリが必要ないため、orderByRaw() メソッドを使用するよりも効率的になる可能性があります。
以上がEloquentとFluentを使用してLaravelでランダムな行を選択する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。