4
    SQLSTATE[22P02]: Invalid text representation: 7 
    ERROR: invalid input syntax for type boolean: ""
    500 Internal Server Error - PDOException

这是由 Doctrine2 (2.2-DEV) 引起的错误消息,恐怕是再次出现的错误:http: //www.doctrine-project.org/jira/browse/DDC-1394

导致此错误的查询如下:

public function getFindAllNonOthersQueryBuilder()
{
    return $this
        ->createQueryBuilder('t')
        ->where('t.isOther = :isOther')
        ->setParameter('isOther', false);
}

字段 isOther 以这种方式映射:

/**
 * @var boolean $isOther
 *
 * @ORM\Column(name="isOther", type="boolean")
 */
protected $isOther = false;

这里发生了什么?我已经检查了 postgres 数据库中的类型,它boolean也是

4

3 回答 3

6

我做了更多的谷歌搜索,因为我有同样的问题,我通过FOSMessageBundle找到了解决方案,如果你将 '\PDO::PARAM_BOOL' 添加到你的 setParameter 它可以工作,如下所示:

$qb->setParameter('isOther', false, \PDO::PARAM_BOOL);
于 2013-04-03T11:44:07.583 回答
6

你必须使用Literal表达。它与问题 #DDC-1683有关

我的示例代码:

$q->andWhere($q->expr()->eq('item.published', $q->expr()->literal(true)));
于 2013-04-17T20:52:14.263 回答
3

我有同样的问题。

解决方案:使用0而不是false

...
->setParameter('isOther', 0);
于 2012-07-10T19:04:49.747 回答