你好!
我尝试过使用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();注意:我知道我可以一个接一个地使用->andWhere等,但它只是为了XDebug的目的。
Note2:$authNamespace>store表示GPos_Model_Store实体的ID。
无论如何,我在$queryBuilder->where('s.store = ?', $authNamespace->store)上得到一个异常,声明:“在这个上下文中不允许类型'‘的表达式。”
我尝试使用实体本身,但随后收到了“在此上下文中不允许使用'GPos_Model_Store‘类型的表达式”。例外..。
你们谁能指出我在这里做错了什么吗?
谢谢!
发布于 2012-05-18 13:35:07
发现了我的错误。
将查询更改为:
$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();现在它就像一种魅力。
https://stackoverflow.com/questions/10596615
复制相似问题