2012-05-15 1 views
0

Здравствуйте!Исключение DQL QueryBuilder

Я попытался установить запрос с использованием DQL QueryBuilder, но до сих пор ничего хорошего ... Запрос Я хотел бы иметь следующий вид:

$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(); 

Примечание: Я знаю Я мог бы использовать -> andWhere и т. Д. Один за другим, но это было просто для цели XDebug.
Note2: $ authNamespace-> хранит идентификаторы объекта GPos_Model_Store.

В любом случае, я получаю исключение на $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(); 

И теперь он работает как шарм.