我正在使用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
答案 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的程序相同。