2

我在 Doctrine 2 ORM 中遇到了一个非常简单的查询问题。我确定我已经完全按照文档进行操作,但它不起作用。我有这个:

$qb = $this->em->createQueryBuilder()
    ->select('p')
    ->from('Property', 'p')
    ->where('type = :type');
$properties = $qb->getQuery()->setParameters(array(
    'type' => 'house',
))->getResult();

我得到:

QueryException:[Semantical Error] line 0, col 46 near 'type = :type':错误:'type' 未定义。

我也试过:

$properties = $qb->getQuery()->setParameters(array(
    ':type' => 'house',
))->getResult();

没有运气。我敢肯定这一定很简单,但我就是看不出有什么问题。
谢谢。

4

2 回答 2

6
->where('p.type = :type');

在这种情况下,您始终必须指定属性的所有者 -Property实体。

于 2011-03-03T17:57:36.560 回答
0

我一直在 QueryBuilder 上完成 setParameter(),而不是在查询上。

尝试

$qb = $this->em->createQueryBuilder()
    ->select('p')
    ->from('Property', 'p')
    ->where('type = :type');

$qb->setParameters(array('type' => 'house'));

$properties = $qb->getQuery()->getResult();
于 2011-03-03T17:46:43.083 回答