【问题标题】:Doctrine 2 ORM problem setting parametersDoctrine 2 ORM问题设置参数
【发布时间】:2011-03-03 17:36:37
【问题描述】:

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

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

我得到:

QueryException: [语义错误] 'type = :type' 附近的第 0 行,第 46 列: 错误:未定义“类型”。

我也试过了:

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

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

【问题讨论】:

  • 嗯。 $qb->setParameters(array('type' => 'house')); $properties = $qb->getQuery()->getResult() 会发生什么?

标签: php sql doctrine-orm dql


【解决方案1】:
->where('p.type = :type');

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

【讨论】:

  • 啊,我怎么错过了!?谢谢。
【解决方案2】:

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

试试

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

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

$properties = $qb->getQuery()->getResult();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-19
    • 2013-12-10
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多