我正在使用此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"}
答案 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;
}