Я хочу переделать собственный SQL-запрос с помощью построителя запросов Doctrine.
В этом случае я получаю следующую ошибку:
Запрос выполняется и возвращает результат (с объединениями и без них).
Но когда я добавляю простой WHERE, базовыми значениями объекта являются NULL.
Проверено
- QueryBuilder (сложный: по умолчанию мне нужно шесть объединений)
- QueryBuilder (просто: без присоединения)
- ВКЛ
- разные getResult() и execute() звонки
PHP 7.0 (обновления невозможны...)
./composer.phar info | grep doctrine
doctrine/annotations v1.4.0 Docblock Annotations Parser
doctrine/cache v1.6.2 Caching library offering an object-oriented API for many cache backends
doctrine/collections v1.4.0 Collections Abstraction library
doctrine/common v2.7.3 Common Library for Doctrine projects
doctrine/dbal v2.5.13 Database Abstraction Layer
doctrine/doctrine-bundle 1.10.3 Symfony DoctrineBundle
doctrine/doctrine-cache-bundle 1.3.5 Symfony Bundle for Doctrine Cache
doctrine/inflector v1.2.0 Common String Manipulations with regard to casing and singular/plural rules.
doctrine/instantiator 1.0.5 A small, lightweight utility to instantiate objects in PHP without invoking their cons...
doctrine/lexer 1.0.2 PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Pars...
doctrine/orm v2.5.14 Object-Relational-Mapper for PHP
Основные значения заполнены (например, id и title).
$qb = $this->createQueryBuilder('artikel')
;
return $qb->getQuery()->execute();
Основные значения null, кроме id.
$qb = $this->createQueryBuilder('artikel')
->andWhere('artikel.id = :ids')
->setParameter('ids', '1010729320')
;
return $qb->getQuery()->execute();
Почему основное значение null, когда я использую предложение WHERE?
@SwitchCase Да, я проверял это несколько раз, но идентификатор - это хитрость! Это строковый параметр, а идентификатор, конечно же, является целым числом. Я удаляю 's, и он работает, как и ожидалось. :D Почему это происходит: В моем коде это второй запрос после одного запроса, который передает идентификаторы для выполнения joins. Мне интересно, что другая сущность выдает строку вместо используемого целого числа. Спасибо, и я добавлю ответ с решением.
Резиновая нырка помогла тебе, приятель! молодец хаха
хехе, ага! Иногда требуется своего рода обязательство, такое как Stackoverflow. :D






Это очень просто. ;)
Тип данных id — это integer, а данный параметр имеет тип string.
Так что это отличается, и php ничего не делает автоматически.
Удалите ' до и после идентификатора.
Примечание: найдите недостающее '
$qb = $this->createQueryBuilder('artikel')
->andWhere('artikel.id = :ids')
->setParameter('ids', 1010729320)
;
return $qb->getQuery()->execute();
У меня проблема возникает раньше, но это уже другая история (пишу копейки в комментарии выше).
Спасибо вам всем
Я думаю, вы бы уже попробовали это, но действительно ли
1010729320является идентификатором? Вы дважды проверили это, если вы используете данные приборов, я бы сказал, чтобы проверить дважды :)