【问题标题】:Doctrine cache relations教义缓存关系
【发布时间】: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


【解决方案1】:

你用缓存做什么不是问题。您获得每个类别的图像查询的原因是因为您延迟加载图像。左将图像加入类别并将图像添加到您的选择中,一切都很好。

【讨论】:

  • 谢谢,这确实是解决方案!
猜你喜欢
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 2013-02-13
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多