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

标签 mongodb symfony doctrine mongodb-php doctrine-mongodb

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

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

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

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

干杯。

最佳答案

当你使用ORM时你可以做

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

使用 ODM 你应该可以做到

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

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

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

关于mongodb - 在 symfony2 + doctrine 中更改运行时的 MongoDB 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15679449/

相关文章:

json - 使用 Doctrine2 请求 JSON 类型字段中的键/值

python - 如何在 SQLAlchemy ORM 中查询多个表

php - 从具有多个对象的表单中保存数据

node.js - 如何在 Flutter android 应用程序中发送推送通知?

javascript - 与 mongoDB(和 Mongoose )的 promise 链接。如果已发送响应,如何在 .then() 之后使用 .save() 并正确突破 promise 链?

mongodb - 无法从副本集中最后一个剩余节点读取

javascript - 在 javascript 中检索 parameters.yml

mysql - Symfony2 : PdoSessionHandler Error 'sess_lifetime'

symfony - PHP fatal error : Uncaught RuntimeException: APP_ENV environment variable is not defined

mongodb - 如何确保 MongoDB 中数组第一个元素的索引以加快查询速度?