【Laravel】対象のカラム最小・最大値でwhere検索する

えび

DBのデータの中で、対象のカラムで一番小さい値や大きい値で検索したときのメモ

最小・最大値の取得方法

前提として、SQLでは最小値の取得にはmin()、最大値の取得にはmax()を使用する

  • 例えば、下記のような商品情報が入ったitemsテーブルがあった場合
idnameprice
1商品A3000
2商品B1500
3商品C2000

  • min関数、max関数の実行結果は下記のようになる
select min(price)  from items;
> 1500

select max(price)  from items;
> 3000

これを利用して、Laravelのwhere検索で一番小さい値や大きい値を検索対象にしてみた

Eloquentで使ってみる

  • まずは、シンプルに最小・最大値を取得する場合
dd(Item::min('price'));
> 1500

dd(Item::max('price'));
> 3000

  • 上記を使用してwhere検索で最小・最大値を指定する例
$minPriceItem = Item::query()->where('price', Plan::min('price'))->first();
$maxPriceItem = Item::query()->where('price', Plan::max('price'))->first();

  • リレーション先を検索する場合も使える
$minPriceItem = Order::items()->where('price', Plan::min('price'))->first();
$maxPriceItem = Order::items()->where('price', Plan::max('price'))->first();

\ 案件のご依頼・ご相談はこちらから /