Symfony2不能使用双向引用

时间:2015-06-22 10:56:06

标签: mongodb symfony doctrine-orm sonata-admin database

我正在使用Sonata Admin Bundle来创建后端,但我遇到了One-to-Many的问题: 我有“问题”文件引用了一个“QuizzPart”:

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

“QuizzPart”文档引用了许多问题:

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

这就是我如何使用sonata admin添加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对象中,任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:0)

您需要更改quizz部件添加到问题实体的方式。它应该是这样的:

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

    return $this;
}