有大量关于如何在 Doctrine 中使用结果缓存的文档。但是,我无法找到关于如何在实体保存期间更新/插入缓存的单个文档。 目前我正在使用更新。
$entityManager = $this->getEntityManager();
$cacheDriver = $entityManager->getConfiguration()->getResultCacheImpl();
$cacheDriver->delete($key);
$searchEntity->setUpdatedAt(new \DateTime())
->setData([]);
$entityManager->persist($searchEntity);
$entityManager->flush();
并插入类似的东西
$searchEntity = new Entity;
$entityManager->persist($searchEntity);
$entityManager->flush();
但是在这两种情况下,我都想刷新/插入缓存。有什么方法可以在不手动创建/更新缓存条目的情况下实现这种简单易行的方法。
最佳答案
创建了一个 social network使用包含 Doctrine 的 Symfony 标准版。我遇到过这个问题,当时我觉得在插入/更新后继续删除缓存和查询数据库是一种浪费,但要插入/更新的数据随时可用。
我完全同意,对此没有明确的文档。在我数周的研究中,除了在数据库插入时手动构建缓存外别无选择,它是一个数组数组,即多维数组。我必须查询数据库并创建一个缓存条目,为其分配一个值,将其传递给 twig 并在我的开发环境中进行 var 转储以查看它的外观并在成功插入时模仿其结构(您可以为创建一个监听器这个)。由于我的社交网络是关于折扣的,每次有人被点赞时,我都会通过在该数组中搜索匹配的 id 键来更新缓存,然后通过添加(或减去 1)来更新其总点赞数,这同样适用于总评论和分享等. 当我开始使用 Apc 缓存时,我已经成功地测试了这一点,然后是 Memcached,现在我当前的缓存是 Redis,它仍在工作。
请引用我的老question对于一些示例代码
关于symfony - 在学说实体保存期间更新/插入缓存条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32054645/