Doctrine QueryBuilder не может проанализировать ГДЕ X В EntityField - PullRequest
0 голосов
/ 18 марта 2020

Когда я пытаюсь выбрать все объекты, где число находится в коллекции, Doctrine выдает исключение:

[Syntax Error] line 0, col 70: Error: Expected =, <, <=, <>, >, >=, !=, got 'IN'

QueryBuilder используется следующим образом:

$this->getEntityManager()->createQueryBuilder()->select('f0')->from(Factory::class, 'f0')->where("${companyId} IN f0.offices");

Facotry::offices - это отношения ManyToMany.

Что я делаю не так?

1 Ответ

0 голосов
/ 18 марта 2020

ORM Magi c не работает так, как я ожидал. Вы не можете использовать поле ManyToMany в качестве массива, и синтаксический анализатор ожидает простого сравнения, если левая часть является целым числом. Чтобы получить ожидаемый результат, вы должны присоединиться к полю и отфильтровать этот результат по идентификатору.

$qb->innerJoin("f0.offices", 'be')->where("be.id = ${companyId}");
...