最小・最大値の取得方法
前提として、SQLでは最小値の取得にはmin()
、最大値の取得にはmax()
を使用する
- 例えば、下記のような商品情報が入ったitemsテーブルがあった場合
id | name | price |
1 | 商品A | 3000 |
2 | 商品B | 1500 |
3 | 商品C | 2000 |
- 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();
DBのデータの中で、対象のカラムで一番小さい値や大きい値で検索したときのメモ