1. ホーム
  2. php

[解決済み】Laravel - EloquentまたはFluentランダム行

2022-03-25 22:25:40

質問

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

SQLを使えば、RAND()でオーダーできることは知っています。しかし、私はランダムな行を取得したいです なし 最初のクエリより前のレコードの数をカウントする必要があります。

何かアイデアはありますか?

解決方法は?

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();

Laravel 3:

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

チェック この記事 をMySQLのランダム行に追加しました。Laravel 5.2はこれをサポートしています。 RAWクエリ .

1を編集します。 ダブルグラさんがおっしゃるように、orderBy()はASCかDESC以外を許さないので これ を変更しました。それに伴い、私の回答も更新しました。

2を編集します。 Laravel 5.2 でようやく実装された ラッパー関数 このために その名も inRandomOrder() .