我在Symfony2应用程序中使用Doctrine MongoDB ODM。
如何设置默认提交选项(例如safe: 3
和fsync: true
)?
理想情况下,我可以在我的YAML配置文件中执行此操作,但the docs seem to indicate this isn't possible。
如果我可以get the Configuration object I should be able to set defaultCommitOptions(如fsync
)那里,但我不确定如何/何时/何地这样做。
答案 0 :(得分:2)
从PR #114开始,您可以使用顶级配置选项default_commit_options
。默认情况下,捆绑包将使用与ODM相同的值,即{safe: true}
。以下是支持选项的快速示例:
doctrine_mongodb:
default_commit_options:
safe: 2 # boolean or positive integer for replication
fsync: false # boolean
timeout: 10 # integer >= -1
有关详细信息,请查看DI扩展的Configuration类和单元测试。
对于旧版本的DoctrineMongoDBBundle,Configuration类已在服务容器中注册,这意味着您可以自己实现它。这样做的两个选项是在您自己的bundle中创建编译器传递并在服务定义上添加方法调用,或者,如果这太复杂,则访问运行时代码中的服务实例并直接调用setDefaultCommitOptions()
。
感兴趣的代码位于DoctrineMongoDBExtension和loadDocumentManager()
方法中。从那里,您可以看到为每个Configuration实例分配的服务ID(每个DocumentManager存在一个)。我相信你也可以通过getConfiguration()
方法获取DM的配置。