我在symfony 2.7.2中使用couchDb。
我有几个疑问。 现在我安装了这个Bundle
我创建了一个用于测试的实体
<?php
namespace foo\GarageBundle\Document;
use Doctrine\ODM\CouchDB\Mapping\Annotations as CouchDB;
/**
* @CouchDB\Document
*/
class Utente
{
/** @CouchDB\Id */
private $id;
/** @CouchDB\Field(type="string") */
private $nome;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set nome
*
* @param string $nome
* @return Utente
*/
public function setNome($nome)
{
$this->nome = $nome;
return $this;
}
/**
* Get nome
*
* @return string
*/
public function getNome()
{
return $this->nome;
}
}
在我的控制器中,我添加了此代码
$dm = $this->container->get('doctrine_couchdb.client.default_connection');
$doc = $this->container->get('doctrine_couchdb.odm.default_document_manager');
try{
$dm->createDatabase($dm->getDatabase());
}catch(\Exception $e){
$msg = $e->getMessage();
}
$user = new Utente();
$user->setNome('foo');
$doc->persist($user);
$doc->flush();
我的config.yml是
doctrine_couch_db:
client:
default_connection: default
connections:
default:
dbname: symfony2
odm:
default_document_manager: default
document_managers:
default:
auto_mapping: true
使用控制器我创建了数据库,但我无法插入新文档,我收到此错误
The class 'foo\GarageBundle\Document\Utente' was not found in the chain configured namespaces
我不明白为什么使用捆绑包作为我正在使用的东西是有用的(我知道这可能是一个愚蠢的问题),为什么我必须使用* @CouchDB\Document
而不是{{1}在我的实体里面?
答案 0 :(得分:2)
似乎与实体类的命名空间有关的问题。
自动化正在注册the CouchDocument subnamespace 你的捆绑,而不是文档(由自动映射 DoctrineMongoDBBundle)
因此,请为User
类和您使用的其他Counch使用不同的命名空间,如下所示:
namespace foo\GarageBundle\CouchDocument;
特别是:
<?php
namespace foo\GarageBundle\CouchDocument;
use Doctrine\ODM\CouchDB\Mapping\Annotations as CouchDB;
/**
* @CouchDB\Document
*/
class Utente
{
希望这个帮助
答案 1 :(得分:-1)
/**
* @CouchDB\Document
* @CouchDB\Index
*/
class Utente
{