我正在构建一个ZF2 + Doctrine2 Web应用程序,并在我的Entity Repositories中实现了缓存。Zf2 - Doctrine2 - 缓存关系查询查询
public function findActive()
{
$query = $this->_em->createQueryBuilder();
$query->select('r')
->from('Admin\Entity\Brands', 'r')
->where('r.deleted = false')
->orderBy('r.name', 'ASC');
return $query->getQuery()
->useResultCache(true, 7200, 'brands_find_active')
->getResult();;
}
我一直无法弄清楚如何为查找查询注入缓存逻辑。
就像我有一个用户表与一个role_id链接到角色表,我执行一个getRole()->getRoleName()
调用。这会导致对角色表进行额外的SQL查询。我如何缓存整个查询/递归?
我在配置中有一段代码。但是,使用ZendDeveloperTools,我注意到它实际上并没有缓存我的查询结果。一旦我实现了自定义实体存储库并手动调用useResultCache(),查询就开始从缓存中提取结果。我完全理解你对代理模式行为的解释。 – jas
如果查询缓存不起作用,它必须是一个错误。有两种选择:1)ZDT在缓存时也显示查询(所以这会让你感到困惑),或者2)缓存不起作用。如果后者是这种情况,你能否在Github上报告一个问题? –