CakePHP: счетчик кэшей, но с небольшим поворотом - PullRequest
0 голосов
/ 17 августа 2011

Я использовал счетные кэши для многих своих моделей.У меня есть один вопрос, который я не знаю, как это сделать.

У меня есть модель User и модель Activity.У активности есть столбец с именем type, который может быть таким, как «запустить», «прогуляться» и т. Д.

Я знаю, что могу легко создать счетчик кэша для activity_count в таблице пользователей.Но я хочу, чтобы столбцы счетчиков, такие как run_count, walk_count, считали действия с type = "run" или type = "walk" и т. Д., Но при этом имели все преимущества автоматического обновления счетчиков.

ЕстьЕсть ли простой способ сделать это?Спасибо!

Ответы [ 2 ]

1 голос
/ 17 августа 2011

Вы можете сделать это, используя COunterCache ... единственное, вы должны определить отдельные отношения принадлежности для каждого действия. Прежде всего позвольте мне сказать, что это не лучший способ решить эту проблему на практике, но только потому, что вы спросили:

  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 (я не знаю соглашения для этого)

0 голосов
/ 17 августа 2011

Нету. Вы можете посчитать type = "run", или type = "walk", или просто обычный счетчик, но только один из них. С другой стороны, код для обновления не так уж плох. Вы также можете добавить эту логику в afterSave.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...