我在 Symfony2 应用程序中使用 Doctrine MongoDB ODM。
如何设置默认提交选项(例如safe: 3
and fsync: true
)?
理想情况下,我可以在我的 YAML 配置文件中执行此操作,但文档似乎表明这是不可能的。
如果我可以获得 Configuration 对象,我应该可以在那里设置 defaultCommitOptions(如fsync
),但我不确定如何/何时/在哪里这样做。
我在 Symfony2 应用程序中使用 Doctrine MongoDB ODM。
如何设置默认提交选项(例如safe: 3
and fsync: true
)?
理想情况下,我可以在我的 YAML 配置文件中执行此操作,但文档似乎表明这是不可能的。
如果我可以获得 Configuration 对象,我应该可以在那里设置 defaultCommitOptions(如fsync
),但我不确定如何/何时/在哪里这样做。
从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 扩展的配置类和单元测试以获取更多信息。
对于旧版本的 DoctrineMongoDBBundle,Configuration 类注册在服务容器中,这意味着您可以自己实现它。这样做的两个选项是在您自己的包中创建编译器传递并在服务定义中添加方法调用,或者,如果这太复杂,请在运行时代码中访问服务实例并setDefaultCommitOptions()
直接调用。
感兴趣的代码在DoctrineMongoDBExtension和loadDocumentManager()
方法中。从那里,您可以看到为每个配置实例分配的服务 ID(每个 DocumentManager 都有一个)。我相信您也可以通过该getConfiguration()
方法获取 DM 的配置。