条令缓存关系


Doctrine cache relations

我有一个实体"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;
    }

我循环浏览视图中的项目,并显示每个项目的一些图像。

是否可以将这些查询缓存到?我现在为每个项目获取一个查询来获取它的图像。

使用缓存不是问题所在。您获得每个类别的图像查询的原因是您懒惰地加载图像。左键将图片连接到类别中,并将图片添加到您的选择中,您就一切都好了。