将文档命名空间从Bundle / Document更改为Bundle / Model

时间:2014-07-09 17:18:52

标签: symfony doctrine doctrine-odm

我正在使用DoctrineMongoDBBundle,通常我将文档放入MyBundle/Document目录并且工作正常,但我希望更改为MyBundle/Model

将我的文档移动到新命名空间后,我收到错误消息

[Exception] 
You do not have any mapped Doctrine MongoDB ODM documents for any of your bundles...

目前我正在使用注释来设置配置,我不想使用xml或yml。这是当前的配置,我怎么能实现这个?

# app/config/config.yml
doctrine_mongodb:
    connections:
        default:
            server: mongodb://localhost:27017
            options: {}
    default_database: "%database_name%"
    document_managers:
        default:
            auto_mapping: true

1 个答案:

答案 0 :(得分:2)

假设您的文档为Acme/Model/Invoice

您可以像这样调整映射:

doctrine:
  odm:
    # ...
    mappings:
      Acme:
        type: annotation
        is_bundle: false
        dir: %kernel.root_dir%/../src/Acme/Model
        prefix: Acme\Model
        alias: MyDocuments

现在使用这样的映射:

$documentManager->getRepository('MyDocuments:Invoice');

如果您想将文档保存在捆绑包中......

...只需使用捆绑包的名称即AcmeDemoBundle代替Acme作为映射名称,将is_bundle设置为true和{{ 1}}选项将被视为相对于bundle的根目录。

有关映射选项的更多信息,请参阅文档章节 DoctrineBundle Configuration#Mapping Information

this blog post 可以在 {{3}} 中找到有关如何通过捆绑存储文档的更多信息。

Doctrine ORM btw的程序相同。