【问题标题】:Symfony2 and ODM flushingSymfony2 和 ODM 刷新
【发布时间】:2015-06-20 08:05:52
【问题描述】:

在我的项目中,我使用了一个文档“问题”,它在设置问题的类别并刷新我的数据库中的任何内容后引用(很多到另一个文档“类别”) 有我的代码

    $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 

【问题讨论】:

    标签: mongodb symfony odm


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 这不是解决方案(如果我们从数据库中得到问题,则无需坚持)我试过 id 并没有工作
    • 我是否正确,您已经有一个问题和一个类别,而您想要做的就是将类别添加到问题中?在这种情况下,您能否提供映射,以便我们查看关系定义中是否缺少任何内容?
    • 是的,你是对的 Xatoo,我已经编辑了问题以添加我的映射。我已经尝试使用 referenceOne,它可以工作,但不能使用 referenceMany。
    猜你喜欢
    • 2014-04-11
    • 2015-12-13
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 2012-05-20
    • 2015-02-01
    相关资源
    最近更新 更多