0

我是 Symfony 2 的新手,在设置 Doctrine 时遇到了困难。当我尝试保留我的模型时出现以下错误:在链配置的命名空间中找不到类“Foo”。

我有一个需要 Composer 自动加载器的引导文件,并将此加载器注册到 AnnotationRegistry

use Doctrine\Common\Annotations\AnnotationRegistry;
$loader = require "vendor/autoload.php";
AnnotationRegistry::registerLoader(array($loader, "loadClass"));

我在 config.yml 中配置了 CouchDB

doctrine_couch_db:
  client:
    connections:
      default:
        dbname: foo
        host: data.foo
        port: 5984
  odm:
    document_managers:
      default:
        connection: default

我的模型带有注释

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

/**
 * Model object for foo data.
 * @ODM\Document
 */
class Foo {
    ...
}

我有一个 ContainerAwareCommand 用于获取 Doctrine ObjectManager

$dm = $this->getContainer()->get("doctrine_couchdb.odm.default_document_manager");

但是当我试图坚持

$dm->persist(new Foo());

我收到一个错误

The class 'Foo' was not found in the chain configured namespaces

编辑:经进一步调查, MappingDriverChain 为空。驱动程序数组中没有 defaultDriver 和值。我不知道这是如何填充的,但似乎这是根本问题。

4

1 回答 1

0

基本上我花了2个小时才自己解决了这个问题。您必须将实体不要放入实体文件夹,而是放入 CouchDocument 文件夹以进行自动加载。

其次,我需要将我的包添加到管理器配置中,如下所示:

doctrine_couch_db:
  client:
    dbname: sddb
  odm:
    document_managers:
      default:
        mappings:
          SDDBBundle:
            type: annotation
        auto_mapping: true

文档的命名空间如下所示:

namespace SDDB\SDDBBundle\CouchDocument;

有时文档不是最好的......因为在快速而肮脏的启动示例中没有人告诉你这一点

于 2014-08-11T14:56:38.617 回答