【发布时间】:2015-09-22 19:19:26
【问题描述】:
我有一个实体“类别”,它与许多“项目”有关,而许多“项目”在术语中有许多“图像”。
我将结果缓存在“类别”存储库中,以在某些条件下获取链接到该类别的所有项目。缓存是通过 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;
}
我正在循环浏览视图中的项目并显示每个项目的一些图像。
是否可以将这些查询缓存到?我现在为每个项目获取 1 个查询以获取其图像。
【问题讨论】:
-
如果你加入图像并将其添加到选择中,就像你对项目一样,它应该缓存就好了。
-
实际上,除了缓存之外,您获得每个类别的图像查询的原因是因为您延迟加载图像。左将图像加入类别并将图像添加到您的选择中,一切都很好。
-
@Richard 将其发布为答案 :)
-
@JakubZalas 是的,完成了
标签: php symfony caching doctrine-orm redis