Php 一个计数器缓存递增,一个不递增-尽管两者的代码相同

Php 一个计数器缓存递增,一个不递增-尽管两者的代码相同,php,cakephp,cakephp-2.0,Php,Cakephp,Cakephp 2.0,我正在开发一个基本的论坛系统,并在其中使用了三个计数器缓存 两个类别用于线程容器,分别具有reply\u计数和thread\u计数,最后一个类别用于post本身,具有reply\u计数 一个线程由多个forumpost组成,其中一个是线程is_thread=true,其余的是回复is_thread=false 我的ForumPost代码的一部分如下所示: public $belongsTo = array( 'ForumCategory' => array(

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

两个类别用于线程容器,分别具有reply\u计数和thread\u计数,最后一个类别用于post本身,具有reply\u计数

一个线程由多个forumpost组成,其中一个是线程is_thread=true,其余的是回复is_thread=false

我的ForumPost代码的一部分如下所示:

    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'
        )
    );
虽然这在很大程度上起作用,但我注意到了一种奇怪的行为:线程将增加类别的线程数,而回复不会增加类别的回复数,尽管它们确实会增加线程的回复数

我仍然习惯于CakePHP处理这类事情的方式,所以我可能错过了一些明显的东西,但我已经思考了一段时间——任何帮助都将不胜感激

编辑

正在执行以下语句:

UPDATE ... SET `ForumCategory`.`reply_count` = 8  WHERE `ForumCategory`.`id` = 0

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


我已经开始让它在所有回复上设置论坛类别id,我想这是一个小小的牺牲。

你调试过这一点吗?是否正在生成相应的SQL查询?如果是的话,它们看起来像什么?您是否尝试过删除其他关联以检查是否存在冲突?我不知道我可以检查生成了哪些查询-我现在正在分析这些查询,因为有很多查询,其中一些查询相当长,但乍一看,它似乎正在尝试用ID 0更新类别。