нужно сделать в одном запросе 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
подскажите как правильно сделать?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Пишу бота на PHP и возник вопрос, а можно ли закрыть диалоговое окно после определенной команды? Чтобы после ответа клиента бот закрывал каким...
Есть такой код отправки содержимого корзины на мылоПочему каждый товар отправляется своим письмом (например, если в корзине 3 товара = 3 отдельных...