Doctrine - запросчик setParameters с массивом (вложенные / кратные значения) - PullRequest
0 голосов
/ 13 июня 2019

Я использую Doctrine в своем приложении PHP (но не использую Symfony). Я пытаюсь сделать динамический запрос только с одним addWhere / orWhere.

Вот мой код:

$alias = 'a';
$key = 'id';
$qb = $repo->createQueryBuilder($alias);
$qb->select($alias);
$qb->andWhere($alias . ' = ' . $key);

// Key is "id" and value is a dynamic array "[1, 2, 3, 6...]"
$qb->setParameter($key, $value);

Если значение только "1", я получил этот DQL:

SELECT a FROM contact a WHERE a = :id

И это работает. Но со значением в виде массива я хочу выполнить этот запрос без нескольких «andOr», потому что мой массив динамический. Есть ли способ автоматического добавления (addWhere или orWhere) для автоматического получения этого с помощью моего массива:

SELECT a FROM contact a WHERE a = :id OR a:= id OR a:= id

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

1 Ответ

1 голос
/ 13 июня 2019

Вы должны использовать IN инструкцию.

$alias = 'a';
$key = 'id';
$values = [1, 2, 3];
$qb = $repo->createQueryBuilder($alias);
$qb->select($alias);
$qb->where(\sprintf("%s.%s IN (:values)", $alias, $key));

$qb->setParameter('values', $values);

Надеюсь, это поможет.

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