Суммарный запрос с использованием функции groupBy () в laravel

Таблица, где X, Y и Z имеют отдельные количества.

Пример данных:

Name | Amount | Date —————|————————|————————— X | 100 | 15-11-17 Y | 50 | 15-11-17 X | 50 | 15-11-17 Z | 70 | 15-11-17 Z | 30 | 15-11-17 

Теперь я хочу показать таблицу, в которой X вернет одну строку с суммированием двух значений в одну и ту же дату.

Ожидаемый результат:

 Name | Amount | Date —————|————————|————————— X | 150 | 15-11-17 Y | 50 | 15-11-17 Z | 100 | 15-11-17 

Итак, что же такое запрос laravel? Я использую groupBy (). Но не может получить целевой результат.

Вот мой код запроса laravel

 $data = DB::table('transactions') ->select('transactions.*') ->groupBy('transactions.title_id') ->whereDate('transactions.created_at', '=', $date) ->get(); 

И получил эту ошибку непрерывно

 "SQLSTATE[42000]: Syntax error or access violation: 1055 'finance_report.transactions.id' isn't in GROUP BY 

Кто угодно, пожалуйста, помогите

Предполагая, что ваше имя таблицы – это transactions , а столбцы и данные, как в вашей примерной таблице, – SQL-запрос будет

 SELECT Name, SUM(Amount) as Amount, Date FROM transactions GROUP BY Name, Date 

В laravel вы напишете это как

 $data = DB::table('transactions') ->select('Name', DB::raw('SUM(Amount) as Amount'), 'Date') ->groupBy('Name', 'Date') ->get(); 

Вы можете добавить свои условия WHERE и что вам нужно в запросе. Но если вам нужно выбрать больше столбцов из таблицы, вам также нужно будет добавить их в предложение groupBy() . Что-то вроде transactions.* , Вероятно, не будет работать из-за режима ONLY_FULL_GROUP_BY . Но это также, вероятно, не имеет смысла.

Вы можете использовать SUM (Amount) с groupBy (date)