Как объединить sum () где между и сгруппировать оператором в красноречивом orm? - PullRequest
0 голосов
/ 15 мая 2018

Я хочу создать запись, которая извлекает данные о продажах в указанном диапазоне дат с помощью ввода 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 голосов
/ 15 мая 2018

Метод 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...