cakephp - 现有模型的 CounterCache CakePHP

标签 cakephp

有没有办法为现有数据初始化 CounterCache?我重构我的代码以使用它,实际上,如果我插入一条记录,它会更新数据,但在那之前它会显示 0,这将破坏其他功能。我考虑过编写一个脚本来完成这项工作,但认为可能会有技巧?

最佳答案

没有内置功能可以神奇地更新所有模型,如果这是您正在寻找的。

然而,您可以相对轻松地使用 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/

相关文章:

javascript - 如何将 id 的动态值传递给我从 json 获取的 jquery?

php - $this->params 在 cakephp 模型中返回 null

Cakephp 迁移 - schema.php 无法加载

php - CakePHP v3.x 如何在没有数据库连接的情况下烘焙

php - CakePHP 获取受影响的原始 SQL 语句行

cakephp - 在 cakephp 中使用 read() 来检索包含数据数组的行

php - cakephp 重定向不正确的路径

php - 我可以在 CakePHP 的更新语句中添加条件吗?

php - CakePHP:发布的文件数据不包含在请求->数据中

javascript - 如何进行相关搜索(由用户告知)