>s基于原则文档$qb->getQuery()->execute();
将返回一个游标,供您迭代结果,但$qb->find($criteria);
返回实际找到的文档。
我正在使用symfony2
MongoDBbundle
,我想避免在Repository
类中迭代结果集。
// Returns Product Document
$entity = $this->get('doctrine_mongodb')
->getRepository("MyBundle:Product")
->findOneBy(array('title' => 'somthing'));
// Returns Cursor
$entity = $this->get('doctrine_mongodb')
->getRepository("MyBundle:Product")
->customFunctionWithcreateQueryBuilder(array('title' => 'somthing'));
如何使cutomFunctionWithcreateQueryBuilder()
返回与findOneBy
相同的类/结果?
另外,如何使execute()
返回所有嵌入的文档?
编辑
cutomFunctionWithcreateQueryBuilder的内容:
class ProductRepository extends DocumentRepository {
public function customFunctionWithcreateQueryBuilder($param, $hydrate = true) {
$query = $this->createQueryBuilder()
->select()
->hydrate($hydrate);
if (isset($param['unique_id'])) {
$query->field('id')->equals($param['unique_id']);
}
return $query->getQuery()->execute();
}
}
如果您只需要一个结果并将 eagerCursor 设置为 true 以一次获取所有数据,则可以使用 getSingleResult()
。例如:
[...]
if (isset($param['unique_id'])) {
$query->field('id')->equals($param['unique_id']);
}
return $query->eagerCursor(true)->getQuery()->getSingleResult();
[...]