当我使用 WHERE 子句时,我的基本实体值为 NULL

When I use the WHERE clause my basic entity values are NULL

我想使用 doctrine querybuilder 重新生成原生 SQL 查询。 在这种情况下,我收到以下错误: 查询执行并 returns 结果(有和没有连接)。 但是当我添加一个简单的 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

一些代码

基本值已填(如idtitle)。

$qb = $this->createQueryBuilder('artikel')
           ;
return $qb->getQuery()->execute();

id外基本值为null

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

为什么我使用WHERE子句时基本值是null

这很容易。 ;)

问题是

id 的数据类型是 integer 且给定参数的类型为 string.
所以它是不同的,php 没有 auto-cast 东西。

解决方案

去掉id前后的'

正确的代码

注意:找出缺失的部分 '

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

对我来说,问题发生在以前,但这是另一个故事(我在上面的评论中写了一些美分)。

谢谢大家