CakePHP: функция COUNT для ассоциации hasmany - PullRequest
0 голосов
/ 05 сентября 2010

Я пытаюсь присоединиться к модели через ассоциацию hasmany и затем посчитать количество записей. В основном у меня есть пользователи и проекты. Я хочу отобразить количество связанных проектов в действии пользовательского индекса.

var $hasMany = array('Project' => 
                                array('className'     => 'Project', 
                                      'conditions'    => '',
                                      'order'         => '', 
                                      'limit'         => '',                    
                                      'foreignKey'    => 'user_id',              
                                      'dependent'     => true,                   
                                      'exclusive'     => false,                  
                                      'finderQuery'   => '',                      
                                      'fields'        => '',                      
                                      'offset'        => '',                      
                                      'counterQuery'  => '',
                                      'counterCache'  => true
                                      )           
                    );

Итак, я присоединился к модели проекта по user_id и установил counterCache на true. Вопрос в том, как мне получить доступ к этому в представлении индекса пользователя?

Я пробовал

<?php echo $user['Project']['project_count']; ?>

и

<?php echo $user['User']['project_count']; ?>

Может ли кто-нибудь мне помочь?

Джоунси

Ответы [ 2 ]

1 голос
/ 15 октября 2010

Если вы все это сделали, а project_count все еще не обновляется, попробуйте отключить кэширование в app / config / core.php

. Я столкнулся с этой проблемой, когда обновил схему базы данных, но Cake былкэширует старую схему и, таким образом, поле счетчика не найдено.

1 голос
/ 05 сентября 2010

counterCache должны быть в ассоциации belongsTo. В вашем примере вам нужно иметь project_count в таблице users, а в ассоциации модели проекта belongsTo вам необходимо активировать counterCache в значение true Проверьте руководство

...