Laravel - Eloquent または Fluent ランダム行 質問する

Laravel - Eloquent または Fluent ランダム行 質問する

Laravel フレームワークで Eloquent または Fluent を使用してランダムな行を選択するにはどうすればよいですか?

SQL を使用すると、RAND() による順序付けができることを知っているのですが、最初のクエリの前にレコード数をカウントせずにランダムな行を取得したいと思います。

何か案は?

ベストアンサー1

Laravel >= 5.2:

User::inRandomOrder()->get();

または特定のレコード数を取得する

// 5 indicates the number of records
User::inRandomOrder()->limit(5)->get();
// get one random record
User::inRandomOrder()->first();

またはランダムコレクションの方法:

User::all()->random();
User::all()->random(10); // The amount of items you wish to receive

Laravel 4.2.7 - 5.1:

User::orderByRaw("RAND()")->get();

Laravel 4.0 - 4.2.6:

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

ララベル3:

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

チェックこの記事MySQLのランダム行に。Laravel 5.2ではこれをサポートしていますが、古いバージョンでは、これより良い解決策はありません。RAWクエリ

編集1: Double Grasが述べたように、orderBy()はASCまたはDESC以外のものを許可しません。これ変更されました。それに応じて回答を更新しました。

編集2: Laravel 5.2はついに実装されましたラッパー関数これにはinRandomOrder()という関数を使用します。

おすすめ記事