为什么 Doctrine MongoDB ODM findBy 和执行返回不同的类



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

    [...]  

相关内容

  • 没有找到相关文章

最新更新