2015-06-22 103 views
0

我使用的是Sonata Admin Bundle來創建後端,但我遇到了一對多問題: 我有引用一個「QuizzPart」的「問題」文檔:雙向參考不起作用Symfony2

/** 
*@MongoDB\ReferenceOne(targetDocument="QuizzPart", inversedBy="questions") 
*/ 
protected $quizzPart ; 

與 「QuizzPart」 文檔引用了許多問題:

/** 
* @var ArrayCollection 
* @MongoDB\ReferenceMany(targetDocument="Question", mappedBy="quizzpart", cascade="all") 
*/ 
protected $questions = array(); 

,這是我怎麼加QuizzPart的問題經奏鳴曲管理:

$formMapper->add('quizzPart', 'sonata_type_model', array('by_reference' => true, 
'required' => false)) ; 

但是當我添加一個問題,我設置其QuizzPart沒有在Quizzpart沒有問題的參考: 這是QuizzPart setter方法:

public function setQuizzPart(\ATS\QuizzBundle\Document\QuizzPart $quizzPart) 
    { 

    $this->quizzPart = $quizzPart; 
    $quizzPart->addQuestion($this); 

    return $this; 
    } 

問題是不添加到QuizzPart對象任何人都可以幫忙嗎?

回答

0

您需要更改quizz部件添加到問題實體的方式。它應該是這樣的:

public function addQuizzPart(QuizzPart $quizzPart) 
{ 
    $this->quizzParts->add($quizzPart); 
    $quizzPart->setQuestion($this); //This way the entities are "connected"   

    return $this; 
} 
+0

這正是我在做什麼@Stiven,但它的對象QuizzPart沒有在數據庫 –

+0

好像沖洗()操作爲quizzPart不執行更新 –

+0

試着讓你的'by_reference => false'。你的問題實體試圖使用'setQuizzPart'而不是'addQuizzPart' – stevenll