我正在使用 Symfony2 MongoDB + Doctrine,我想告诉 doctrine 将我的对象保存在集合中,集合的名称与定义对象的类的名称不同。此外,新集合的名称应该是不同集合中对象的 ID。例如,我有一个名为 Posts 的类,我想将它们保存在一个以原始用户集合中的用户 ID 命名的集合中。这意味着我需要告诉 doctrine 将所有新帖子保存在一个名为例如的集合中。 User555 和我应该能够告诉 doctrine 创建这个集合并在运行时保存在那里。
我可以看到我可以通过在文件中配置它来静态更改集合的名称,如下所示:Storing a document in a different collection - Mongodb with symfony2
但我需要能够在运行时创建集合。
如果有人指出正确的方向,我将不胜感激!
干杯。
最佳答案
当你使用ORM时你可以做
$em->getClassMetadata('\AcmeBundle\Entity\Something')->setTableName('test')
使用 ODM 你应该可以做到
`$dm->getClassMetadata('\AcmeBundle\Document\Something')->setCollection('test')
我查看了 Doctrine 代码,这是可能的。但是请注意,通过这样做,您将在脚本的生命周期内更改用于该文档的集合,除非您将其设置回去。
我不知道有什么合理的方法可以一次只对一个实体执行此操作。可能最好通过创建您自己的持久性服务来包装 ODM。
关于mongodb - 在 symfony2 + doctrine 中更改运行时的 MongoDB 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15679449/