将文档存储在不同的集合中 - Mongodb与symfony2

时间:2012-08-01 10:41:17

标签: php mongodb collections symfony

我试图使用Mongodb和symfony2

将文档存储在不同的集合中

这是我的控制器,他将文档设置为db。

public function createAction(){
$post = new Post();
$post->setUrl('A Foo Bar');
$post->setTitle('asdf');
$dm = $this->get('doctrine.odm.mongodb.document_manager');
$dm->persist($post);
$dm->flush();
return new Response('Created post id '.$post->getId());}

如您所见,这是关于DoctrineMongoDBBundle

的官方文档的示例

但问题是,默认情况下它会将文档创建为名为class的Collection,在我的例子中是Post(),因此集合名称为Post。我想将文档保存到名为charlies_posts的集合或任何字符串作为变量。

2 个答案:

答案 0 :(得分:2)

很容易:)在文档类的定义中,只需使用“collection”参数。

这是一个例子:

<?php

namespace MyProject\Document;

use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;

/**
 * @ODM\Document(
 *     collection="charlies_posts"
 * )
 */
class Post
{

答案 1 :(得分:0)

Yeahp,正如您所说,我们可以将其定义为参数。

Documents\User:
  type: document
  db: my_db
  collection: charlies_post

在这种情况下,在YAML映射文件中可能会选择不同的集合,但在我的情况下,我想以dinamically方式设置集合名称,因为我有与用户相关的帖子,所以charlies帖子应该转到charlies_post集合和peter帖子应该去peter_post收集......

我想必须有一种方法来设置它但我无法找到它..