CakePHP:计数器缓存,但有一个小改动


CakePHP: Counter caches, but with a small twist

我一直在为我的许多模型使用计数器缓存。我有一个问题,我不知道如何去做。

我有一个用户模型和一个活动模型。Activity有一个名为type的列,可以是run, walk等。

我知道我可以很容易地为用户表中的activity_count创建计数器缓存。但我想有计数器列,如run_count, walk_count计数活动与类型="运行",或类型="步行"等,但仍然与自动更新计数的所有好处。

是否有简单的方法来做到这一点?谢谢!

你可以使用COunterCache…唯一的问题是,您应该为每个活动定义单独的belongsTo关系。首先,我想说的是,这不是解决这个问题的最佳方法,但仅仅因为你问:

  var $belongsTo = array(
                       'UserWalk' => array(
                'counterCache' => true,
                'foreignKey' => 'user_id',
                'className' => 'User',
                'conditions' => array('Activity.type' => 'walk'),
                'counterScope' => array('Activity.type' => 'walk')
                       ),
               'UserRun' => array(
                'counterCache' => true,
                'foreignKey' => 'user_id',
                'className' => 'User',
                'conditions' => array('Activity.type' => 'run'),
                'counterScope' => array('Activity.type' => 'run')
                       ),
        );

之后,Cake将查找每个关联模型的Count字段。现在,counterChache的字段命名应该类似于user_run_count或userrun_count(我不知道这种惯例)

不。您可以计数type ="run"或type =" walk",或者只是正常计数,但只能计数其中一个。另一方面,要更新的代码还不错。

相关文章: