为什么聚合函数在我的laravelsql查询中不起作用?

ztyzrc3y  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(419)
  1. $year = date("y");
  2. for($i=1;$i<=12;$i++)
  3. {
  4. $MonthlyReceive = DB::table('order_items') ->whereBetween('created_at',array($year.'-'.$i.'-1',$year.'-'.$i.'-31')) ->select(DB::raw('sum(price*quantity)'))->where('quantity','<','0');
  5. return $MonthlyReceive;
  6. }
  7. // table name "order_items"
  8. // id |product_id |quantity |price |order_id
ibps3vxo

ibps3vxo1#

您可以每月获得聚合数据,而无需循环。

  1. $MonthlyReceive = DB::table('order_items')
  2. ->select(DB::raw('sum(price*quantity) as amnt'))
  3. ->whereRaw('date(created_at) between "'.$year.'-01-01" and "'.$year.'-12-31"')
  4. ->where('quantity','<','0')
  5. ->groupBy(DB::raw("date_format(created_at, '%Y-%M')"));

只是使用 group by 具有聚合功能。

wmvff8tz

wmvff8tz2#

  1. $year = date("y");
  2. for($i=1; $i<=12; $i++) {
  3. $MonthlyReceive = DB::table('order_items')
  4. ->whereBetween('created_at', array($year.'-'.$i.'-1',$year.'-'.$i.'-31'))
  5. ->where('quantity', '>', '0')
  6. ->sum(DB::raw('price*quantity'));
  7. return $MonthlyReceive;
  8. }

我用这个代码把它修好了。

相关问题