Doctrine2 [语法错误]错误:预期文字,得到' - '

时间:2013-07-18 09:26:36

标签: symfony doctrine-orm

我正在使用doctrine2和symfony2,我正在尝试执行一个简单的选择查询:

我想跑:

SELECT * FROM table WHERE status in (1, -1)

这个PHP代码:

$queryBuilder = $this->_em->createQueryBuilder();
        $queryBuilder
        ->select('n')
        ->from('MyBundle:Table', 'n')
        ->where('n.status IN (1, -1)');
return $queryBuilder->getQuery()->getResult();

给出以下例外:

[Syntax Error] line 0, col 96: Error: Expected Literal, got '-'

这是实体中的属性定义:

/**
 * @var integer
 *
 * @ORM\Column(name="status", type="integer", nullable=true)
 */
private $status;

如果我在in参数中仅使用正数,它将起作用。例外情况只发生在负数上。

导致此例外的原因是什么?

1 个答案:

答案 0 :(得分:13)

应该做的诀窍:

$queryBuilder = $this->_em->createQueryBuilder();
        $queryBuilder
        ->select('n')
        ->from('MyBundle:Table', 'n')
        ->where('n.status IN (:status)')
        ->setParameter('status', array(1, -1));