Сопоставление сущности в CouchDb Symfony2

Я использую couchDb в Symfony 2.7.2.

У меня есть несколько сомнений.
Теперь я установил это сверток

И я создаю одну сущность для тестирования

<?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 вместо @Document внутри моей сущности?

2

Решение

Кажется, проблема связана с пространством имен класса сущностей.

Автопоиск регистрируется подпространство имен CouchDocument из
ваш пакет, а не документ (который автоматически сопоставляется
DoctrineMongoDBBundle)

Так что используйте другое пространство имен для User class и другой Counch, который вы используете, следующим образом:

namespace foo\GarageBundle\CouchDocument;

Особенно:

<?php

namespace foo\GarageBundle\CouchDocument;

use Doctrine\ODM\CouchDB\Mapping\Annotations as CouchDB;

/**
* @CouchDB\Document
*/
class Utente
{

Надеюсь это поможет

Увидеть это обсуждение на GitHub.

2

Другие решения

/**
* @CouchDB\Document
* @CouchDB\Index
*/
class Utente
{
-1

По вопросам рекламы [email protected]