2015-04-14 50 views
0

在我的項目中,我使用了一個文檔「問題」,其中設置了一個問題的類別和沖洗我的數據庫中沒有任何變化後的許多到另一個文檔「類別」 有我的代碼Symfony2和ODM flushing

$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

根據您的ChangeTrackingPolicy您可能需要刷新之前堅持的問題。

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

通過堅持一個實體,確保實體中的任何更改都在UnitOfWork中註冊。使用刷新功能將這些操作發送到數據庫。

由於您可能想要堅持很多實體,因此堅持不會直接導致對數據庫的查詢。因此,在文檔管理器上調用flush之前,所有操作都會「緩衝」。

+0

它不是解決方案(如果我們從數據庫中得到的問題是沒有必要堅持)我試過身份證,並沒有工作 –

+0

我是正確的,你已經有一個問題和一個類別,所有你想要的要做的是添加類別的問題?在這種情況下,你能否提供映射,以便我們可以看到關係的定義中是否有任何缺失? – Xatoo

+0

是的,你是對的Xatoo,我已經編輯了這個問題來添加我的地圖..我已經用referenceOne嘗試過了,但它的工作原理,但沒有referenceMany。 –