在symfony2 + doctrine中运行时更改MongoDB集合

时间:2013-03-28 10:29:43

标签: mongodb symfony doctrine mongodb-php doctrine-mongodb

我正在使用Symfony2 MongoDB + Doctrine,我想告诉doctrine将我的对象保存在与定义该对象的类的名称不同的集合中。此外,新集合的名称应该是不同集合中对象的id。例如,我有一个名为Posts的类,我想将它们保存在以原始User集合中用户的ID命名的集合中。这意味着我需要告诉学说将所有新帖子保存在一个名为eg的集合中。 User555和我应该能够告诉doctrine创建这个集合并在运行时保存。

我可以看到我可以静态更改集合的名称,并在这里的文件中进行配置:Storing a document in a different collection - Mongodb with symfony2

但我需要能够在运行时创建集合。

如果有人指出我正确的方向,我将感激不尽!

干杯。

1 个答案:

答案 0 :(得分:1)

当您使用ORM时,您可以

$em->getClassMetadata('\AcmeBundle\Entity\Something')->setTableName('test')

使用ODM你应该能够做到

`$dm->getClassMetadata('\AcmeBundle\Document\Something')->setCollection('test')

我查看了Doctrine代码,这是可能的。但请注意,通过执行此操作,您将更改用于该文档的集合,用于脚本的生命周期,除非您将其设置回来。

我不知道有任何合理的方法一次只为一个实体做这件事。可能最好通过创建自己的持久服务来包装ODM。