2016-04-24 2 views
1

У меня следующий код в моем RepositorySymfony Учение QueryBuilder OneToMany фильтрация

// ProductBundle/Repository/ProductRepository.php 

$qb->where($qb->expr()->eq('afp.id', 15)); 
$qb->andWhere($qb->expr()->eq('afp.id', 14)); 

return $qb 
      ->select('a', 'afp') 
      ->leftJoin('a.productFields', 'afp') 
      ->getQuery() 
      ->getResult(); 

Но я всегда сразу получить нулевую отдачу, но я хочу, чтобы получить которым продукт имеет как productFields (так orWhere не хорошо)

Помогите мне пожалуйста Im из любых идей

ответ

1

Вы хотите использовать MEMBER OF вместо сравнения id. В противном случае вы ищете запись, которая имеет два разных значения id, что, конечно, невозможно.

Это будет делать то, что вы хотите:

$qb->where($qb->expr()->isMemberOf(15, 'a.productFields')); 
$qb->andWhere($qb->expr()->isMemberOf(14, 'a.productFields')); 
+0

он не работает на первой попытки: 'Попытка вызвать неопределенный метод под названием«isMemberOf»класса«Doctrine \ ORM \ Query \ Expr».' У меня есть попробовал с '$ qb-> где («? 1 ЧЛЕНА a.productFields »); $ qb-> andWhere («? 2 ЧЛЕНА a.productFields»); $ qb-> setParameters (['1' => 14, '2' => 15]); ', но Im stuck –

+0

Хорошо, это работает очень хорошо. Большое спасибо за то, что вы дали мне идею! Теперь следующий вопрос: возможно ли использовать 'MEMBER OF' для других полей, чем' id' –

+0

Вы можете передать целую сущность вместо id, но это делает более или менее то же самое. Если это не для вас, пожалуйста, подумайте над тем, чтобы добавить еще один вопрос и более подробно объяснить ваше дело. –

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