CakePHP 3: CounterCache с BelongsToMany

У меня ассоциация BelongsToMany, мои таблицы PostsTable, TagsTable и PostsTagsTable.

Как объясняется здесь, в книге CakePHP (ассоциации), У меня есть эти поля:

tags.id, tags.tag, tags.post_count
posts_tags.id, posts_tags.tag_id, posts_tags.post_id

Все работает корректно на данный момент. Итак, как вы понимаете, теперь я хочу использовать поле tags.post_count с CounterCache.

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

Можешь мне помочь? Спасибо.


person Mirko Pagliai    schedule 05.10.2015    source источник


Ответы (1)


Из книги CakePHP

Поведение CounterCache работает только для ассоциаций ownTo. Например, для параметра «Комментарии принадлежат статьям» необходимо добавить поведение CounterCache в таблицу комментариев, чтобы сгенерировать количество комментариев для таблицы статей. Однако возможно заставить это работать для ассоциаций, принадлежащихToMany. Вам необходимо включить поведение CounterCache в пользовательской сквозной таблице, настроенной в параметрах ассоциации. Посмотрите, как настроить пользовательскую таблицу соединений с помощью параметра «сквозь».

ОБНОВЛЕНИЕ

person Salines    schedule 05.10.2015
comment
извините @Salines, поле post_count в таблице `post_tags'? Уверены ли вы? - person Mirko Pagliai; 05.10.2015
comment
Я пишу вам то, что написано в книге cakephp. Но что вам нужно, так это сумма сообщений для каждого тега, где связь между тегами и сообщениями? - person Salines; 05.10.2015
comment
да, конечно, я хочу просто количество постов для каждого тега - person Mirko Pagliai; 05.10.2015