получить сумму всех транзакций каждого пользователя за определенный месяц

Я работаю над небольшим финансовым веб-приложением, и мне нужно создать один ежемесячный общий отчет обо всех пользователях, который показывает общую сумму всех транзакций, совершенных каждым пользователем в течение месяца. структура таблицы приведена ниже.

username    amount  date
-----------------------------
a           1000    2018-8-1
b           2000    2018-8-1
c           1500    2018-8-3
b           1700    2018-8-6
b           1100    2018-8-7
a           2000    2018-8-10
c           1600    2018-8-12           

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

a : 3000
b : 4800
c : 3100

Пожалуйста, помогите мне узнать сумму, используя laravel query builder.


person HirenMangukiya    schedule 23.08.2018    source источник
comment
Вы уже пробовали писать код Laravel? Вот один SO-ответ, который вы, вероятно, можете использовать сразу: stackoverflow.com/questions/24887708/   -  person Tim Biegeleisen    schedule 23.08.2018
comment
Спасибо @TimBiegeleisen, это работа для меня.   -  person HirenMangukiya    schedule 23.08.2018
comment
Возможный дубликат Laravel Eloquent: sum with groupBy   -  person Jonas Staudenmeir    schedule 31.08.2018


Ответы (1)


Ты можешь сделать это :

$user
->transactions()
->where('date', '>', Carbon::before())
->where('date', '<', Carbon::now())
->get(['user_id', 'amount'])
->sum('amount');

Это учитывая, что у вас есть связь между транзакциями и пользовательскими моделями. Вы можете адаптироваться к вашей схеме. Но чистое решение MySQL, с которым связался @Tim Biegeleisen, может быть более эффективным с точки зрения ресурсов.

Вы также можете использовать whereBetween(), но убедитесь, что он корректно работает с датами.

person Mtxz    schedule 23.08.2018
comment
Здесь не указан конкретный месяц. - person GiamPy; 23.08.2018
comment
Извините, я забыл запрос даты. Я обновил свой ответ. Углеродные даты, конечно, являются примерами. - person Mtxz; 23.08.2018