我想生成使用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
请给我建议解决这个问题。
答案 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();