Doctrine setParameter()在一个简单的表达式上不适合我。我收到 '?'

时间:2015-09-01 16:05:38

标签: php symfony doctrine-orm

使用此代码:

$qb->select('user.id')->from('myVendor\CoreBundle\Entity\Users', 'user');
$expr = $qb->expr()->eq('user.email', '?1');
$qb->where($expr);
$qb->setParameter(1, 'testval');

我收到:

SELECT e0_.uid AS uid_0 FROM my_table e0_ WHERE e0_.email = ?

我也试过这个:

// ...
$expr = $qb->expr()->eq('user.email', ':test');
// ...
$qb->setParameter('test', 'testval');

PHP 5.5 | MSSQL | Doctrine \ Dbal 2.5.1 | Doctrine \ Orm 2.5.0

我做错了什么?

1 个答案:

答案 0 :(得分:1)

Doctrine不替换查询本身的参数,它使用预准备语句,这意味着数据库服务器替换(和转义)参数。

这就是为什么在尝试显示查询时总是会看到参数化(带问号)查询的原因。