2013-03-28 45 views
1

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

我可以看到,我可以静态地在喜欢这里的文件,将其配置更改集合名称:Storing a document in a different collection - Mongodb with symfony2

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

如果有人指出我正确的方向,我会很感激!

干杯。

回答

1

当你使用ORM,你可以做

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

使用ODM,你应该能够做到

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

我通过主义码看了看,这是可能的。但请注意,通过这样做,您将在脚本生命周期中更改用于该Document的集合,除非您将其设置回。

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

+0

工作改变收集的第一次,但是当我有一个每个语句它只是保持第一组不更新与新值 – 2013-06-26 16:06:18