ハマログ

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

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日


関連記事

PHPでChatworkに自動投稿する

イーツー・インフォでは、社内コミュニケーションツールとしてChatworkを利用…

nagiosでHTTPステータスコードを監視する

Nagiosについて イーツー・インフォでは、ウェブサイトの死活監視の一部にNa…

GoogleマップのAPIキーが設定されていなかったので設定しました

はじめに いまさらですが、Googleの以下の記事について。 Google Ma…


← 前の投稿

次の投稿 →