我试图建立一个自定义查询函数返回对应的一些滤镜MongoDB的文件。 我创造了这个功能到我的文档特定的资源库User
:
namespace LogAnalyzer\CoreBundle\Repository; use Doctrine\ODM\MongoDB\DocumentRepository; class UserRepository extends DocumentRepository { public function getUserTemp($clauses = null) { /* Create query */ $query = $this -> createQueryBuilder(); /* Add clauses */ if($clauses) { if(isset($clauses['id'])) $query -> field('id') -> equals($clauses['id']); if(isset($clauses['firstName'])) $query -> field('firstName') -> equals($clauses['firstName']); if(isset($clauses['lastName'])) $query -> field('lastName') -> equals($clauses['lastName']); if(isset($clauses['email'])) $query -> field('email') -> equals($clauses['email']); if(isset($clauses['password'])) $query -> field('password') -> equals($clauses['password']); } /* Return */ return $query -> getQuery() -> execute(); } }
这里是我的定义User
文档:
namespace LogAnalyzer\CoreBundle\Document; use JsonSerializable; use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB; use Symfony\Component\Validator\Constraints as Assert; /** * @MongoDB\Document(repositoryClass="LogAnalyzer\CoreBundle\Repository\UserRepository") */ class User implements JsonSerializable { /** * @MongoDB\Id */ protected $id; /** * @MongoDB\String */ protected $firstName; /** * @MongoDB\String */ protected $lastName; /** * @MongoDB\String */ protected $email; /** * @MongoDB\String */ protected $password; ... }
在我的控制器我有使用查询功能的专用功能:
private function getUserAction()
{
$manager = $this -> get('doctrine_mongodb') -> getManager();
$repository = $manager -> getRepository('LogAnalyzerCoreBundle:User');
$users = $repository -> getUserTemp(array(
'firstName' => 'First'
));
return $users;
}
当我运行的功能,我没有得到预期对象的数组,而是一个Doctrine\ODM\MongoDB\Cursor
来代替。
哪里是我的错误?
编辑:
我应该使用-> toArray(false)
?
谢谢。