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