2010-09-05 4 views
0

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

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

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

Я попытался

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

и

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

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

Джоунси

ответ

1

counterCache нужно быть в belongsTo ассоциации. В вашем примере вам нужно иметь project_count в таблице users, тогда как в ассоциации проектной модели belongsTo вам необходимо активировать counterCache в true. Check the manual

+0

Привет, я включил counterCache в модели проектов и пытаюсь получить к нему доступ, используя Когда я просматриваю дамп sql, я на самом деле не вижу, что функция Count, вызываемая – iamjonesy

1

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

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

+0

, извините, забыл обновить этот вопрос. Глупо, я не добавил поле count в мою таблицу проектов. Я точно знаю :( – iamjonesy

Смежные вопросы