我有一个实体"Category",它与许多"Projects"有关系,后者在术语中有许多"Images"。
我将结果缓存在"类别"存储库中,以获取链接到该类别的所有项目,并附带一些条件。缓存是用redisBundle和条令完成的:query->setResultCacheDriver函数:
try {
$qb = $this->getEntityManager()->createQueryBuilder();
$qb->select('Category', 'Projects')
->from('AppBundle'Entity'Category', 'Category')
->leftJoin(
'Category.projects',
'Projects',
'Doctrine'ORM'Query'Expr'Join::WITH,
$qb->expr()->eq('Projects.active', 1)
)
->where(
$qb->expr()->eq('Category.slug', ':slug')
)
->setParameter('slug', $slug);
$query = $qb->getQuery();
$query
->setResultCacheDriver($this->cacheDriver)
->setResultCacheLifetime($this->cacheLifetime);
return $query->getOneOrNullResult();
} catch ('Doctrine'ORM'NoResultException $e) {
return null;
}
我循环浏览视图中的项目,并显示每个项目的一些图像。
是否可以将这些查询缓存到?我现在为每个项目获取一个查询来获取它的图像。
使用缓存不是问题所在。您获得每个类别的图像查询的原因是您懒惰地加载图像。左键将图片连接到类别中,并将图片添加到您的选择中,您就一切都好了。