如何在雄辩的orm中结合sum()和group by语句?

时间:2018-05-15 11:44:03

标签: php eloquent

我想生成使用2参数输入$date_from$date_to在指定日期范围内检索数据销售的记录 所以我试图结合一些SQL函数来做到这一点:

public function print_report(Request $request) {
    $from = "2018-04-03";
    $to = "2018-04-17";
    $data = AppSalesDetail::select('app_sales_detail.*','app_sales.*')
        ->leftJoin('app_sales','app_sales.app_sales_id','=','app_sales_detail.app_sales_id')    
        ->whereBetween('sale_date', array($from, $to))
        ->groupBy("app_sales_detail.app_sales_id")  
        ->sum('app_sales_detail.sub_total')
        ->get();
}

在我在查询中添加->sum('app_sales_detail.sub_total')之前,一切正常如我所料,但在插入该函数后发生此错误

Call to a member function groupBy() on string

请给我建议解决这个问题。

1 个答案:

答案 0 :(得分:1)

sum()方法只返回一行,您必须将其添加到select() 您也无法选择所有列:

$data = AppSalesDetail::select('app_sales_detail.app_sales_id')
    ->selectRaw('SUM(sub_total) sub_total')
    ->leftJoin('app_sales','app_sales.app_sales_id','=','app_sales_detail.app_sales_id')    
    ->whereBetween('sale_date', array($from, $to))
    ->groupBy("app_sales_detail.app_sales_id")  
    ->get();