使用DoctrineODM检索文档表格CouchDb

时间:2015-07-23 08:33:49

标签: symfony doctrine-orm couchdb doctrine-odm

我正在使用此bundle来管理我的数据

我可以创建文档,但我无法检索它们 我试过

    $dm = $this->container->get('doctrine_couchdb.odm.default_document_manager');
    $users = $dm->getRepository('myGarageBundle:Utente')->find("781f1ea2e6281beb4ee9ff72b6054af2");

并检索一个这样的文档:

object(my\GarageBundle\CouchDocument\Utente)[303]
  private 'id' => string '781f1ea2e6281beb4ee9ff72b6054af2' (length=32)
  private 'name' => string 'foo' (length=7)

这没关系。 但如果我这样做

$users = $dm->getRepository('myGarageBundle:Utente')->findBy(array('name' => 'foo'));

我有一个空数组。

我在couchDb中的文件是

{"_id":"781f1ea2e6281beb4ee9ff72b6054af2","_rev":"1-f89fc2372709de90ab5d1f6cfe6a8f47","type":"my.GarageBundle.CouchDocument.Utente","name":"foo"}

1 个答案:

答案 0 :(得分:2)

选中此page

  

通过简单条件查询仅适用于带索引的文档   字段。

您必须在您的实体中添加此内容

/**
 * @CouchDB\Index
 * @CouchDB\Field(type="string")
 */
private $name;
  

Doctrine持久性接口附带一个名为的概念   ObjectRepository,允许查询任何一个或一组字段   一个东西。因为CouchDB使用视图进行查询(相当于   关系数据库中的物化视图)此功能不能   开箱即用。 Doctrine CouchDB可以提供一个视图   公开每个文档的每个字段,但这个视图只会增长   无限大小,大部分信息都没用。

如果您想使用像findAll()这样的方法,您必须为所有文档编制索引:

<?php
/** @Document(indexed=true) */
class Person
{
    /**
     * @Index
     * @Field(type="string")
     */
    public $name;
}