我在Doctrine 2中的缓存文件夹中填满了数千个文件夹,这些文件夹似乎包含已执行的所有教条操作的已翻译SQL查询。在代码中,我的DQL查询没有明确的缓存命令。几乎所有DQL都包含一些基于用户操作的变量部分,主要是WHERE子句中的一些过滤。我喜欢缓存翻译过程的概念,但似乎查询是作为一个整体处理的,因为许多查询都是唯一的,因此缓存毫无意义。
因为我对Doctrine很新,所以必须有一些我不知道的东西。有人可以给我一些关于如何使查询缓存正常工作的指示吗?
另外,Doctrine命令行中的clear-cache不会删除这些文件夹,我手动删除它们,这意味着什么?
谢谢,迈克
答案 0 :(得分:0)
参数值不会影响Doctrine的查询缓存。只会为:
创建一个缓存条目$query = $em->createQuery('SELECT u FROM MyBundle\Entity\User u WHERE u.id = :id');
无论你用不同的值来称呼它多少次:
$query->setParameters('id' => 1)->getResult();
$query->setParameters('id' => 2)->getResult();
<...>
因此,这不是查询缓存,或者您没有使用parameters binding。