我正在开发一个基本的论坛系统,并在其中使用了三个计数器缓存。
两个用于类别(线程容器),其中包含reply_count
和thread_count
,最后一个用于具有reply_count
的帖子本身。
线程由多个ForumPost
组成,其中一个是线程(is_thread
= true
),其余是回复(is_thread
= {{1} })。
我的false
代码的一部分如下所示:
ForumPost
虽然这在很大程度上起作用,但我注意到了一个奇怪的行为:线程会增加类别的线程数,但是回复不会增加类别的回复计数,尽管它们会增加线程的回复计数。
我仍然习惯了CakePHP处理这类事情的方式,所以我可能错过了一些显而易见的事情,但我一直在思考这个问题 - 任何帮助都会非常感激!
修改
正在执行以下声明:
public $belongsTo = array(
'ForumCategory' => array(
'counterCache' => array(
'thread_count' => array('ForumPost.is_thread' => 1),
'reply_count' => array('ForumPost.is_thread' => 0)
// The line above is the one not working
)
),
'Thread' => array(
'className' => 'ForumPost',
'foreignKey' => 'forum_post_id',
'conditions' => array(
'ForumPost.is_thread' => 0
),
'counterCache' => array(
'reply_count' => array('ForumPost.is_thread' => 0)
)
),
);
public $hasMany = array(
'Reply' => array(
'className' => 'ForumPost',
'foreignKey' => 'forum_post_id'
)
);
答案 0 :(得分:0)
刚才意识到这是因为我没有为回复设置forum_category_id
以避免冗余,但CakePHP使用该值进行插入。
我必须开始在所有回复中设置forum_category_id
,这是我想的一个小牺牲。