【问题标题】:Changing the MongoDB collection on run time in symfony2 + doctrine在 symfony2 + 教义中更改运行时的 MongoDB 集合
【发布时间】:2013-03-28 10:29:42
【问题描述】:

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

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

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

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

干杯。

【问题讨论】:

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


    【解决方案1】:

    当你使用 ORM 时,你可以这样做

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

    使用 ODM 你应该可以做到

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

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

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

    【讨论】:

    • 第一次尝试更改集合,但是当我有一个 for 每个语句时,它只保留第一个集合,不要使用新值更新
    猜你喜欢
    • 2013-06-24
    • 1970-01-01
    • 2019-07-06
    • 2020-12-05
    • 1970-01-01
    • 2017-08-14
    • 2023-03-27
    • 1970-01-01
    • 2015-09-04
    相关资源
    最近更新 更多