laravelバージョン 8.58.0
テーブル構成
productsテーブル
- id
- name
salesテーブル
- id
- date
- shop_id
sales_productテーブル
- id
- sales_id
- product_id
- quantity
リレーション
PHP
1// Productクラス 2 3class Product extends Model 4{ 5 use HasFactory; 6 7 public function sales() 8 { 9 return $this->belongsToMany(Sales::class)->withPivot('id'); 10 } 11} 12 13// Salesクラス 14class PurchaseOrder extends Model 15{ 16 use HasFactory; 17 18 public function shops() 19 { 20 return $this->belongsTo(Shop::class, 'order_shop'); 21 } 22 23 public function products() 24 { 25 return $this->belongsToMany(Product::class)->withPivot('id', 'quantity'); 26 } 27}
やりたいこと
salesテーブルのdateで期間を絞って、売れた商品の情報をランキング方式で取得したいのです。
わからないこと
一つのsalesカラムに紐付いたsales_productの情報をとってくることはできました。
Sales::find(id)->products()
ただ、salesの期間を絞り込んでsales_productの商品ごとの合計を取得する方法がわかりません。
やりたいのは以下のように複数のsalesにあるsales_productの集計です。
Sales::whereBetween('date', '2020-xx-xx xx:xx:xx', '2021-xx-xx xx:xx:xx')->products()
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。