Доктрина: Найти множество отношений, где есть все элементы в массиве - PullRequest
0 голосов
/ 09 мая 2019

Мне нужна помощь, как найти проекты, которые во многих отношениях содержат все элементы в массиве.

Например, имеют следующую структуру:

Project
  - Id - int
  - Name - string
  - Categories - manytomany (Category)

Category
  - Id - int
  - Name - string

И мне нужно найти проекты, которые содержат всеКатегории в массиве идентификаторов для примера (1, 2, 3).

Когда я использую

$qbProjects->andWhere($qbProjects->expr()->in('p.categories', [1,2,3]));

, он находит все проекты, которые имеют категорию с идентификатором 1, 2 или 3., но не все из них.

1 Ответ

0 голосов
/ 11 мая 2019

Если предположить, что $categories - это переменная, которая содержит массив категорий, которые вы хотите проверить по projects, то вы можете использовать цикл foreach для создания нескольких операторов andWhere() для удовлетворения всех условий:

foreach ($categories as $category) {
    $qbProjects->andWhere($qbProjects->expr()->in($category->getId(), 'p.categories'));
}

Конечно, вы можете изменить ваши потребности, если вы получаете идентификаторы категорий другим способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...