一个counterCache递增,一个不递增 - 尽管两者的代码相同

时间:2015-05-19 12:10:10

标签: php cakephp cakephp-2.0

我正在开发一个基本的论坛系统,并在其中使用了三个计数器缓存。

两个用于类别(线程容器),其中包含reply_countthread_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'
        )
    );

1 个答案:

答案 0 :(得分:0)

刚才意识到这是因为我没有为回复设置forum_category_id以避免冗余,但CakePHP使用该值进行插入。

我必须开始在所有回复中设置forum_category_id,这是我想的一个小牺牲。