如何在MongoDB中通过Doctrine 2 ODM在Zend Framework2上使用PHP执行查询


How to perform query in MongoDB, through Doctrine 2 ODM using PHP on Zend Framework2?

我在这里附上了示例代码。查询返回整个数据库的 映射而不是要查询的数据,或者错误 抽象水合器类。

这是映射器的代码:-

    <?php

    namespace HelpostApi'Document;
    use Doctrine'ODM'MongoDB'Mapping'Annotations as ODM;
    /** @ODM'Document(collection="posts") */
    class Post
    {
    /** @ODM'Id */
    private $id;
    /** @ODM'Field(type="string") */
    private $postTitle;
    /**
    * @param field_type $postTitle
    */
    public function setPostTitle($postTitle)
    {
    $this->postTitle = $postTitle;
    }
    /**
    * @param field_type $postTitle
    */
    public function getPostTitle()
    {
    return $this->postTitle;
    }
    }
    ?>

这是控制器的代码,包含查询功能:-

    <?php 
    namespace HelpostApi'Controller;
    use Zend'Mvc'Controller'AbstractRestfulController;
    use HelpostApi'Document'Post;
    class PostController extends AbstractRestfulController {
    public function getList() 
    {
    $dm = $this->getServiceLocator()->get('doctrine.documentmanager.odm_default');
    print_r( $dm->createQueryBuilder('HelpostApi'Document'Post')
    ->hydrate(false)
    ->getQuery()
    ->getSingleResult()
    ->execute()
    );
    }
    ?>

如果您的查询很简单,您可能更喜欢使用内置的 ODM 方法之一:

$this->dm->getRepository('HelpostApi'Document'Post')->find($id);

$criteria=array('key'=>'value');
$this->dm->getRepository('HelpostApi'Document'Post')->findOneBy($criteria);

每个都将返回单个 HelpostApi''Document''Post 对象或 NULL。