2012-05-15 68 views
0

您好!DQL QueryBuilder異常

我試着使用的QueryBuilder設置DQL查詢,但到目前爲止,還沒有很好的... 查詢我想有看起來像這樣:

$queryBuilder = Zend_Registry::get('entityManager')->createQueryBuilder(); 
$queryBuilder->select('s.*'); 
$queryBuilder->from('GPos_Model_Sale', 's'); 
$queryBuilder->where('s.store = ?', $authNamespace->store); //breaks on this line 
$queryBuilder->andWhere('s.seller = ?', $seller->getId()); 
$queryBuilder->andWhere('((s.date >= ?', $dateStart); 
$queryBuilder->andWhere('s.date <= ?', $dateEnd); 
$queryBuilder->andWhere('s.status = "closed") OR s.status = "onhold")'); 
$queryBuilder->groupby('s.id'); 
return $queryBuilder->getQuery()->getResult(); 

:我知道我可以一個接一個地使用 - >和Where等,但這只是爲了XDebug的目的。
注2:$ authNamespace-> store代表一個GPos_Model_Store實體的ID。

無論如何,我在$queryBuilder->where('s.store = ?', $authNamespace->store)上得到一個異常,聲明:「在此上下文中不允許使用表達式」。

我嘗試使用實體本身,而不是然後我收到「在此上下文中不允許使用」GPos_Model_Store類型的表達式「。例外...

你們能指出我在這裏做錯了什麼嗎?

謝謝!

+1

本地化過度:查詢構建器API的使用無效。 – Ocramius

回答

4

發現我的錯誤。

改變了我的查詢:

$queryBuilder = Zend_Registry::get('entityManager')->createQueryBuilder(); 
$queryBuilder->select('s'); 
$queryBuilder->from('GPos_Model_Sale', 's'); 
$queryBuilder->where('s.store = :store'); 
$queryBuilder->andWhere('s.seller = :seller'); 
$queryBuilder->andWhere('((s.date >= :dateStart'); 
$queryBuilder->andWhere('s.date <= :dateEnd'); 
$queryBuilder->andWhere('s.status = \'closed\') OR s.status = \'onhold\')'); 
$queryBuilder->groupby('s.id'); 
$queryBuilder->setParameter('store', $store->getId()); 
$queryBuilder->setParameter('seller', $seller->getId()); 
$queryBuilder->setParameter('dateStart', $dateStart->format('Y-m-d H:i:s')); 
$queryBuilder->setParameter('dateEnd', $dateEnd->format('Y-m-d H:i:s')); 
return $queryBuilder->getQuery()->getResult(); 

現在它就像一個魅力。