使用postgres,boolean cast的Doctrine createNativeQuery

时间:2014-05-26 15:41:31

标签: php postgresql symfony doctrine-orm

所以,我的数据库is_good中有一个字段,输入boolean。因此,如果我签入我的数据库,我可以在我的数据中看到TRUEFALSE

我使用Doctrine进行简单查询,只需检查my_table.is_good = $isgood

我有var_dump($isgood),我在这个变量中有一个布尔值。

当我执行我的查询时,我有这个错误(法语):

SQLSTATE[42883]: Undefined function: 7 ERREUR:  l'opérateur n'existe pas : boolean = integer

错误消息中的查询显示:my_table.is_good = 1

我不能理解为什么我无法比较field = boolean

编辑:

这是我的第一个var_dump($isgood)

<pre class='xdebug-var-dump' dir='ltr'><small>boolean</small> <font color='#75507b'>true</font></pre>

我试着把'真实&#39;并且&#39; false&#39;在我的变量中,var_dump($isgood)向我显示了一个字符串,查询就可以了。我不明白!

1 个答案:

答案 0 :(得分:2)

如果要在查询中插入变量,则应使用预准备语句。在学说(使用本机查询)中,您可以使用NativeQuery setParameter函数:

<?php
use Doctrine\ORM\Query\ResultSetMapping;

$rsm = new ResultSetMapping();
// build rsm here

$sql = 'SELECT something FROM my_table WHERE my_table.is_good = ?';
$query = $entityManager->createNativeQuery($sql, $rsm);
$query->setParameter(1, $isgood);
$somethings = $query->getResult();

还有第三个参数可以显式设置参数的类型,但是会自动检测到布尔值。