проблема с counterCache of cakePHP - PullRequest
       11

проблема с counterCache of cakePHP

0 голосов
/ 17 сентября 2009

У меня в проекте по обмену видео есть следующие модели:

 class Video extends AppModel {
        var $name = 'Video';
        var $hasAndBelongsToMany = array(
            'Tag' => array(
                'className' => 'Tag',
                'joinTable' => 'videos_tags',
                'foreignKey' => 'video_id',
                'associationForeignKey' => 'tag_id',
                'unique' => true,
            )
        );
    }

    class Tag extends AppModel {
        var $name = 'Tag';

        var $hasAndBelongsToMany = array(
            'Video' => array(
                'className' => 'Video',
                'joinTable' => 'videos_tags',
                'foreignKey' => 'tag_id',
                'associationForeignKey' => 'video_id',
                'unique' => true,
            )
        );

    }



 class VideosTag extends AppModel {
        var $name = 'VideosTag';

        var $belongsTo = array(
            'Video' => array(
                'className' => 'Video',
                'foreignKey' => 'video_id',
            ),
            'Tag' => array(
                'className' => 'Tag',
                'foreignKey' => 'tag_id',
                'conditions' => '',
                'counterCache' => 'videos_tag_counter'
            )
        );
    }

CounterCache для тегов не работает. Я не знаю, почему и когда я попытался добавить обратный вызов beforeSave () к модели videosTag, я обнаружил, что она не выполняется, когда видео сохраняется (и у этого видео есть теги, и я нахожу их в базе данных, так как соотношения videosTags сохраняется?) !!! может ли любое тело объяснить, почему это происходит?

1 Ответ

2 голосов
/ 19 сентября 2009

Сохранение видео с такими данными:

array(
  'Video' => array(
    ...
  ),
  'Tag' => array(
    'Tag' => array(
      ...
    ),
  ),
);

в модели Video не вызовет обратный вызов beforeSave для модели VideosTag, поскольку Cake обрабатывает данные HABTM, не требуя (или даже не используя) модель соединения / с / через.

Насколько я знаю, нет встроенной функциональности для того, чего вы пытаетесь достичь.

Извлечение Поведение счетчика кэша для отношений HABTM , может делать то, что вам нужно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...