有没有办法为现有数据初始化 CounterCache?我重构我的代码以使用它,实际上,如果我插入一条记录,它会更新数据,但在那之前它会显示 0,这将破坏其他功能。我考虑过编写一个脚本来完成这项工作,但认为可能会有技巧?
最佳答案
没有内置功能可以神奇地更新所有模型,如果这是您正在寻找的。p>
然而,您可以相对轻松地使用 Model::updateCounterCache()
手动更新计数器缓存,检查 Model
在保存或删除时如何使用它。
这是一个基本示例,假设一个 Article hasMany Comment/Comment belongsTo Article
关联。
$article = ClassRegistry::init('Article');
foreach(array_keys($article->find('list')) as $id) {
$article->Comment->updateCounterCache(array(
$article->Comment->belongsTo['Article']['foreignKey'] => $id
));
}
这将更新数据库中所有文章的所有已配置计数器(请记住,根据数据库的大小,这可能是一项非常繁重的任务)。
关于cakephp - 现有模型的 CounterCache CakePHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27176190/