Использование нескольких параметров в качестве аргументов для функции SUBSTRING () Doctrine - PullRequest
0 голосов
/ 22 апреля 2020

Я думаю, что столкнулся с ошибкой Doctrine, но мне интересно, сталкивался ли кто-то еще с этим, или, может быть, я упустил что-то глупое:

// in controller
$qb = $this->getDoctrine()->getRepository(Project::class)->createQueryBuilder('p')
    ->select('p.id')
    ->addSelect('SUBSTRING(:foo, 1, :pos) AS substrField')
    ->setParameter('foo', 'foobar')
    ->setParameter('pos', 3)
;

dump($qb->getQuery()->getResult());

Сгенерированный запрос PDO заканчивается передачей 3 в качестве значения параметра :foo и "foobar" в качестве значения параметра :pos, что приводит к ошибке Oracle Invalid Number. Если я поменяю значения в методах setParameter, это сработает:

->setParameter('pos', 'foobar')
->setParameter('foo', 3)

Умышленное переключение значений в моих вызовах setParameter кажется слишком хакерским, поэтому я использую помощник $qb->expr()->substring() в качестве обойти, который работает, как ожидалось.

Платформа: Doctrine 2.5.14 с Oracle 12 c База данных (12.2.0.1.0)

Я открыл ошибку в Doctrine ORM, немного подробнее здесь

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