坚持一对多的Doctrine Mongodb

时间:2015-05-19 11:37:10

标签: mongodb symfony doctrine-orm sonata-admin

我在我的项目中使用了教义MongoDb。我有两个文件:问题和QuizzPart。

QuizzPart引用了很多问题,为此我做了以下声明:

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

该问题引用了一个QuizzPart。

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

但是当我创建(或编辑)一个测验部分并尝试在其中添加一些问题时,在我的crud(Sonata admin Bundle)中。数据库中的问题文档中没有引用QuizzPart(但是quizzPart引用了很多问题)。我不知道这个bug的来源。

1 个答案:

答案 0 :(得分:0)

经过数小时的研究后我找到了解决方案,实际上问题出在sonata管理包(quizzPartAdmin类)而不是模型的声明中: 它是关于设置标志' by_reference'为假:

        $formMapper
        ->add('questions', 'sonata_type_collection', array('label' => 'add a question', 'by_reference' => false)
        , array(
        'edit'     => 'inline',
        'inline'   => 'table',
        'sortable' => 'id',
        )) 
      ;