Symfony2: делает fetch = "EAGER" создает соединение?

У меня есть это сопоставленное свойство внутри моего объекта product :

 /** * @ORM\ManyToMany(targetEntity="Group", mappedBy="products", indexBy="id", fetch="EAGER") * */ protected $groups; 

Интересно, мое понимание для fetch="EAGER" заключается в том, что он должен получать группы после выбора продукта, это то, что происходит, но он использует 2 запроса, когда я делаю что-то вроде findBy() один запрос, чтобы получить product а другой чтобы получить groups .

Есть ли findBy() заставить findBy() или другие вспомогательные методы получить product вместе с его groups в одном запросе или единственный способ написать пользовательскую функцию репозитория и сделать сам LEFT-JOIN ?

ОБНОВИТЬ

Я попробовал несколько решений и endup, переписывая findBy() :

 public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) { $q = $this ->createQueryBuilder('u') ->select('u, g') ->leftJoin('u.groups', 'g') ->setFirstResult( $offset ) ->setMaxResults( $limit ); foreach ($criteria as $field => $value) { $q ->andWhere(sprintf('u.%s = :%s', $field, $field)) ->setParameter($field, $value) ; } foreach ($orderBy as $field => $value) { $q->addOrderBy(sprintf('u.%s',$field),$value); } try { $q = $q->getQuery(); $users = $q->getResult(); return $users; } catch(ORMException $e) { return null; } } 

Вопросов

1- Могу ли я использовать fetch="EAGER" чтобы findBy возвращал product вместе с его groups в один запрос

2- Если нет, то есть ли случай, когда я использую fetch="EAGER" со многими-ко-многим объектами без fetch="EAGER" производительности

3- Переопределение findBy – хороший подход? любые недостатки?

Благодаря,

У режима FETCH_EAGER есть проблемы. На самом деле для решения этой проблемы существует открытый запрос, но он еще не закрыт.

Я рекомендую использовать специальный репозиторий для извлечения данных так, как вы хотите.