主义缓存关系

时间:2015-07-05 16:16:49

标签: php symfony caching doctrine-orm redis

我有一个实体'类别'这与“多个项目”有关。其中有很多'图像'

我将结果缓存在'类别'存储库以获取具有某些条件的链接到该类别的所有项目。使用redisBundle和doctrine: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个查询以获取其图像。

1 个答案:

答案 0 :(得分:1)

您正在使用缓存执行的操作不是问题。您为每个类别获取图像查询的原因是因为您正在加载图像。将图像连接到类别并将图像添加到您的选择中,您就会很好。