ハマログ

株式会社イーツー・インフォの社員ブログ

LaravelのEloquent,Query Builderで値をランダムソートする

検証環境
PHP5.6
Laravel5.3

Laravel5.2からEloquent(ORM)とQuery BuilderでinRandomOrderメソッドが利用できるようになりました。
検索結果をランダムにソートして返却することができます。

ドキュメント
Database: Query Builder – Ordering, Grouping, Limit, & Offset

inRandomOrder
The inRandomOrder method may be used to sort the query results randomly. For example, you may use this method to fetch a random user:
$randomUser = DB::table(‘users’)->inRandomOrder()->first();

for($i = 0; $i < 5; $i++){
    $job = Job::inRandomOrder()->first();
    print($job->name . PHP_EOL);
}

結果

求人1
求人12
求人4
求人31
求人18

できました。

続いて、relationに対して実行してみます。

for ($i = 0; $i < 5; $i++) {
    $job = Job::where('id', 10)->first();
    $environment = $job->environments()->inRandomOrder()->first();
    print($environment->name . PHP_EOL);
}

結果

土日休み
土日休み
土日休み
土日休み
土日休み

relationには利用できないようです。(しかもエラーにならない)

relationに利用する場合は従来通りrandom関数で対応することにします。

for ($i = 0; $i < 5; $i++) {
    $job = Job::where('id', 10)->first();
    $environment = $job->environments->random();
    print($environment->name . PHP_EOL);
}

結果

フレックスタイム制
土日休み
試用期間あり
社内研修制度あり
資格取得補助あり

できた

inRandomOrderLaravelrandomSortソートランダム

  kaneko tomo   2016年11月13日


関連記事

Amazon Linux 2023のdnf update –securityはyum update –securityと異なる挙動になる

新しいサーバーをAmazon Linux 2023で構築して本番運用を開始しまし…

composer updateでthe requested PHP extension dom is missing from your system.

新しい環境で、composer update(install) を実行したところ…


← 前の投稿

次の投稿 →