1

私は2つのテーブルを持っています:それは次のように定義されています:

CREATE TABLE IF NOT EXISTS `users_correlations` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `correlated_id` int(11) NOT NULL,
  `type` char(1) NOT NULL,
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(100) NOT NULL,
  `first_name` varchar(50) NOT NULL,
  `last_name` varchar(50) NOT NULL,
  `password` varchar(100) NOT NULL,
  `role` varchar(2) NOT NULL,
  `gender` char(1) NOT NULL,
  `dob` date DEFAULT NULL,
  `location` varchar(100) NOT NULL,
  `photo` varchar(255) NOT NULL,
  `photo_dir` varchar(255) NOT NULL,
  `about_me` tinytext,
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `modified` datetime NOT NULL,
  `follower_count`  INT DEFAULT 0,
  `following_count` INT DEFAULT 0,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=42 ;

ここで、HABTM 関連付けを次のように定義しました。

 public $hasAndBelongsToMany=array(

      'Following'=>array(
               'className'=>'User',
               'joinTable'=>'users_correlations',
               'ForeignKey'=>'correlated_id',
               'associationForeignKey' => 'user_id'
       ),
       'Followers'=>array(
                'className'=>'User',
                'joinTable'=>'users_correlations',
                'ForeignKey'=>'user_id',
                'associationForeignKey' => 'correlated_id'
        )
    ); 

今、私はカウンターキャッシュを実装して、フォロワーとフォローの数の記録を追跡したいと考えています..

によって参照されるモデルに ConterCacheHabtm 動作を使用します

http://bakery.cakephp.org/articles/danaki/2009/05/29/counter-cache-behavior-for-habtm-relations

しかし、私の関連付けでは、follower_count と following_count が更新されません。このシナリオで助けてください。

4

1 に答える 1