Когда я использую предложение WHERE, мои базовые значения сущности равны NULL - PullRequest
3 голосов
/ 26 июня 2019

Я хочу перефразировать нативный SQL-запрос с помощью doctrine querybuilder. В этом случае я получаю следующую ошибку: Запрос выполняется и возвращает результат (с объединениями и без). Но когда я добавляю простой WHERE, базовые значения сущности равны NULL.

Протестировано
- QueryBuilder (сложный: по умолчанию мне нужно шесть объединений)
- QueryBuilder (просто: без объединения)
- HQL
- разные 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?

1 Ответ

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

Это очень просто.;)

Проблема была

Тип данных id является integer, а данный параметр имеет тип string.
Так что он отличается, и php не выполняет автоматическоесотворить что-нибудь.

Решение

Удалить ' до и после идентификатора.

Правильный код

Примечание: найти пропавшее '

$qb = $this->createQueryBuilder('artikel')
           ->andWhere('artikel.id = :ids')
           ->setParameter('ids', 1010729320)
           ;
return $qb->getQuery()->execute();

Для меня проблема возникает раньше, но это другая история (я пишу несколько центов в комментарии выше).

Спасибо всем

...