doctrine2 queryBuilder должен возвращать только соответствие результата с значениями массива (ids): 0 / Null и / или один и / или многие id (ы) должны возвращать один результат

У меня есть массив коллекции с именем $configurations . Этот массив совпадает с моим Entity Configuration.php подключенным к Product.php как ManyToMany . Теперь у меня есть другой объект с именем WorkType.php который также подключается к Configuration.php с помощью ManyToMany .

Цель состоит в том, чтобы восстановить продукт с настройками O/Null или Many для текущего типа работы.

По умолчанию у меня есть продукт без конфигураций, но пользователь может выбрать флажками настройки O/Null или One или Many доступные для типа работы.

Поэтому я создал этот queryBuilder в своем ProductRepository.php :

 public function getProductByManyConfig($slug, $configurations) { $queryBuilder = $this->getEntityManager()->createQueryBuilder(); $queryBuilder->select('p') ->from('MyBundle', 'p') ->join('p.workType', 'wt', 'WITH', 'wt.id = p.workType') ->leftJoin('p.configurations','c'); $queryBuilder->add('where', $queryBuilder->expr()->in('c', ':c')) ->andWhere('wt.slug = :slug') ->setParameters(array('slug'=> $slug, 'c'=> $configurations)); return $queryBuilder->getQuery() ->getResult(); } 

Он работает, но проблема в том, что он возвращает мне все соответствия продукта с массивом конфигураций, которые я передаю в запрос.

Например, если массив имеет id 1 и 2 в Configuration.php , запрос возвращает мне продукты, соответствующие параметрам configuration.id = 1 , configuration.id = 2 и configuration.id = 1 и 2 .

Итак, у меня есть 3 условия для достижения, мне нужно только одно; например, только продукт, содержащий всю конфигурацию.

Мне нужно вернуть только один продукт, содержащий ids Configuration.php переданные в массив для текущего WorkType.php !

Это мой код контроллера:

 $vars = array(); //containing all values I need for recover configurations properties $em = $this->getDoctrine()->getManager(); $var = array_values($vars); $configurations = $this->getDoctrine()->getRepository('MyBundle:Configuration')->findByName($var); foreach ($configurations as $conf) { $name = $conf->getName(); } $slug = "the_right_database_correspondence"; $arrayProbuctConfig = $this->getDoctrine()->getRepository('MyBundle:Product')->getProductByManyConfig($slug, $configurations); // return of the view 

Поскольку выбор конфигураций может измениться, мне нужно создать этот динамический метод. Как я могу вернуть хороший результат?