нужно сделать в одном запросе count и sum. запрос примерно такой:
UsersPays::find()
->where([
'and',
['=', 'users_pays.status', '1'],
['=', 'users_pays.active', '1'],
['=', 'users_pays.pay_type_id', '1'],
])
->groupBy('users_pays.card_id')
Теперь самое интересное: если я добавляю к запросу ->count('users_pays.id') или ->sum('users_pays.money) то считает все нормально. но получается два запроса. yii генерирует что-то вроде этого:
SELECT COUNT(*) FROM (SELECT `users_pays`.* FROM `users_pays`
WHERE (`users_pays`.`status` = '1')
AND (`users_pays`.`active` = '1')
AND (`users_pays`.`pay_type_id` = '1')
GROUP BY `users_pays`.`card_id`) `c`
когда в yii пишу так:
UsersPays::find()
->select('COUNT(users_pays.id) as count, SUM(users_pays.money) as sum')
->where([
'and',
['=', 'users_pays.status', '1'],
['=', 'users_pays.active', '1'],
['=', 'users_pays.pay_type_id', '1'],
])
->groupBy('users_pays.card_id')
yii генерирует такой запрос:
SELECT COUNT(users_pays.id), SUM(users_pays.money)
FROM `users_pays`
WHERE (`users_pays`.`status` = '1')
AND (`users_pays`.`active` = '1')
AND (`users_pays`.`pay_type_id` = '1')
GROUP BY `users_pays`.`card_id`
в ответе приходит не сумма и количество по всей таблице, а массив с суммой и количеству по каждому card_id
подскажите как правильно сделать?
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости