在doctrine实体保存期间更新/插入缓存条目

时间:2015-08-17 15:52:26

标签: symfony caching doctrine-orm redis

有很多关于如何在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();

但是在这两种情况下我都想刷新/插入缓存。有没有办法在不手动创建/更新缓存条目的情况下实现这种简单易用的方法。

1 个答案:

答案 0 :(得分:0)

使用包含Doctrine的Symfony标准版创建了social network。当我觉得在插入/更新之后继续删除缓存并查询数据库a然后插入/更新的数据随时可用时,我遇到了这个问题。

我完全同意,没有明确的文件证明这一点。在我多周的研究中,没有选择,只能在DB插入时手动构建缓存,它是一个数组数组,即多维数组。我不得不查询数据库并创建一个缓存条目,为其赋值,将其传递给twig并在我的开发环境中执行var转储以查看它的外观并在成功插入时模仿其结构(您可以创建一个监听器这个)。由于我的社交网络是关于折扣的,所以每次喜欢我都会通过在此数组中搜索匹配的id密钥来更新缓存,然后通过添加(或减去1)更新其总喜欢数量同样适用于总评论和分享等当我开始使用Apc缓存,然后是Memcached时,我已成功测试了这个,现在我的当前缓存是redis,它仍在工作。

请参阅我之前的question了解一些示例代码