我正在使用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对象中,任何人都可以提供帮助吗?
答案 0 :(得分:0)
您需要更改quizz部件添加到问题实体的方式。它应该是这样的:
public function addQuizzPart(QuizzPart $quizzPart)
{
$this->quizzParts->add($quizzPart);
$quizzPart->setQuestion($this); //This way the entities are "connected"
return $this;
}