2011-03-03 59 views
2

我在使用Doctrine 2 ORM進行非常簡單的查詢時遇到了問題。我確信我已經按照文檔來信,但它不起作用。我有這樣的: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': Error: 'type' is not defined.

我也試過:

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

沒有運氣。我確信這一定是如此簡單,但我只是看不出有什麼問題。
謝謝。

+0

嗯。 '$ qb-> setParameters(array('type'=>'house'))會發生什麼? $ properties = $ qb-> getQuery() - > getResult()'? – 2011-03-03 17:56:07

回答

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

你總是要指定一個資源的所有者 - 在這種情況下Property實體。

+0

啊,我怎麼錯過了!?謝謝。 – 2011-03-04 10:26:39

0

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

嘗試

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

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

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