2015-07-05 6 views
0

У меня есть категория «Категория», которая имеет отношение ко многим «проектам», которые в терминах имеют много «изображений».Отношение к доктрине доктрины

Я кэширую результаты внутри репозитория «Категория», чтобы получить весь проект, связанный с этой категорией, с некоторыми условиями. Кэширование выполняется с 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; 
    } 

Я зацикливание Повсеместно проектов в представлении и отображения некоторых imags каждого проекта.

Можно ли кэшировать эти запросы? Im теперь получает 1 запрос для каждого проекта для извлечения его изображений.

+0

Если вы присоединяетесь к изображениям и добавляете их к выбору так же, как и для проектов, он должен кэшировать только штраф. – Richard

+1

На самом деле, кэширование в сторону, причина, по которой вы получаете запрос изображения для каждой категории, - это то, что вы ленивы загружаете изображения. Слева присоедините изображения к категориям и добавьте изображения в свой выбор, и все хорошо. – Richard

+0

@Richard опубликуйте это как ответ :) –

ответ

1

То, что вы делаете с кешем, не является проблемой. Причина, по которой вы получаете запрос изображения для каждой категории, - это то, что вы ленивы загружаете изображения. Слева присоедините изображения к категориям и добавьте изображения в свой выбор, и все хорошо.

+0

Спасибо, это действительно решение! –

Смежные вопросы