Cakephp SUM связанного поля

Я новичок в cakephp, мне нужно найти СУММУ связанной таблицы «один ко многим» внутри запроса cakephp.

У меня есть таблица Users и таблица Invoices

Мне нужна общая сумма счетов-фактур, принадлежащих пользователю, когда я выполняю поиск в таблице «Пользователи». Результат, который я ищу, - показать пользователям и агрегировать итоги счетов.

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

Есть ли способ сделать то же самое в 1.2?


person Josh    schedule 06.04.2011    source источник


Ответы (1)


Попробуйте что-то подобное в своей находке (внесите соответствующие изменения):

array('fields' => array('sum(Model.quantity) AS total')

Надеюсь, поможет.

person Rui    schedule 06.04.2011
comment
Это работает, если я добавляю подзапрос в список полей: array('fields' => array('(SELECT SUM(Invoice.total) FROM Invoices WHERE Users.id = User.id) as total)') Проблема в том, что он также стирает все другие выбранные поля. Есть ли способ сохранить их? - person Josh; 07.04.2011
comment
Вы пробовали array('fields' =› array('(SELECT SUM(Invoice.total) FROM Invoices WHERE Users.id = User.id) как итог)','Field1', 'Field2') ? - person Rui; 07.04.2011
comment
Не забывайте, что sum — это агрегатор, поэтому вам может понадобиться использовать group by. - person Rui; 07.04.2011
comment
Спасибо, так получилось. Выглядит некрасиво... Тем более, что торт должен абстрагировать sql, но он работает. Решение Cake 1.3 намного элегантнее. - person Josh; 07.04.2011