Получить сумму подсчета связанной модели в CakePHP - PullRequest
3 голосов
/ 04 августа 2011

Это немного сложно объяснить, поэтому я постараюсь быть максимально ясным.

В моем проекте CakePHP предположим, что у меня есть модель с именем Country, а Country имеетhasMany ассоциация с Region.Теперь Region также имеет ассоциацию hasMany с User, в то время как страна этого не делает (поскольку Region s иногда можно переключать на другую страну, поэтому ассоциирование пользователей с Country с помощью внешнего ключаэто не вариант).

Итак, сейчас мой SQL будет выглядеть примерно так: (только порциями)

users: id int(16); region_id int(16);
regions: id int(16); country_id int(16);
countries: id int(16);

Что я хочу сделать, это найти функцию, иличто-то вроде counterCache в CakePHP, к которому я могу получить доступ через модель "Страны" и получить счет User в Region, который принадлежит Country.Я знаю, что могу просто получить [Пользователь] [Страна], пройтись по регионам и сосчитать его, но есть ли для этого кешированный метод, который (предпочтительно) не требует дополнительного кода?

Спасибо!

Ответы [ 2 ]

1 голос
/ 05 августа 2011

использовать counterCache для Region и virtualField ('population' => 'SUM (Region.user_count')) (это просто псевдокод!) Для Country.

1 голос
/ 04 августа 2011

Вы можете сделать это с помощью метода find ('count', 'recursive' => 2)

Вы можете найти документы здесь :

...