2

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

我可以看到我可以通过在文件中配置它来静态更改集合的名称,如下所示:Storing a document in a different collection - Mongodb with symfony2

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

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

干杯。

4

1 回答 1

1

当你使用 ORM 时,你可以做

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

使用 ODM 你应该能够做到

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

我查看了 Doctrine 代码,这是可能的。但是请注意,通过这样做,您将在脚本的整个生命周期内更改用于该文档的集合,除非您将其重新设置。

我不知道一次只为一个实体执行此操作的任何合理方法。可能最好通过创建自己的持久性服务来包装 ODM。

于 2013-03-29T14:45:03.150 回答