Symfony2和ODM冲洗

时间:2015-04-14 15:56:07

标签: mongodb symfony odm

在我的项目中,我正在使用文档"问题"在设置问题的类别并在我的数据库中清除没有任何更改后引用(很多到另一个文档"类别") 有我的代码

    $dm = $this->getDocumentManager();

    $question = $this->getDocumentManager()->getRepository('ATS\QuizzBundle\Document\Question')->findOneByQuestion("a?");
    $category = $this->getDocumentManager()->getRepository('ATS\QuizzBundle\Document\Category')->findOneByLabel("Logic");

    $question->addCategory($category);

    $dm->flush();

我的数据库没有变化,任何人都可以帮忙吗? 这是我在问题文件中的映射:

 /**
 *@MongoDB\ReferenceMany(targetDocument="Category") 
*/
  protected $category 

1 个答案:

答案 0 :(得分:1)

根据您的ChangeTrackingPolicy,您可能需要在刷新之前保留问题。

 $dm->persist($question);
 $dm->flush();

通过持久化实体,您可以确保实体中的任何更改都在UnitOfWork中注册。使用flush,您可以将这些操作发送到数据库。

Persist不会直接导致对数据库的查询,因为您可能希望持久化很多实体。因此,在文档管理器上调用flush之前,所有操作都会被“缓冲”。