我无法一次创建一个实体的多个对象

时间:2019-12-29 12:56:32

标签: symfony doctrine

我正在学习Symfony,并且遇到一种情况,需要在表单之后创建实体A的多个对象。

所有这些对象都是完全相同的,但只是一个字段更改的值,这是与实体B的关系OneToMany。以该形式选中此复选框(与B相关的EntityType),所以我想为每个复选框创建一个对象A。 我的问题是,First的表单只允许我一次创建一个First类型的对象。 这是我老师给的项目,我不能创建ManyToMany关系。

有人可以帮我吗?

这是控制器中的代码:

$A = new A();

$form = $this->createForm(AType::class, $A);
$form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) {
        $entityManager = $this->getDoctrine()->getManager();
        $entityManager->persist($A);
        $entityManager->flush();
}

这是FormType中的代码:

$builder
        ->add('anotherField')
        ->add('idB', EntityType::class, [
                'label' => 'B',
                'class' => B::class,
                'expanded' => true,
                'multiple' => true
        ])
;

1 个答案:

答案 0 :(得分:0)

如果我对您的理解正确,那么您希望通过一次提交表单将多个实体保存到数据库中。我会将所有表单数据克隆到一个新对象中,进行更改,然后将所有数据持久保存并刷新,如下所示:

if ($form->isSubmitted() && $form->isValid()) {

    $original = $form->getData();
    $copy = clone $original;

    // here you can make changes to your copy.  

    $entityManager = $this->getDoctrine()->getManager();
    $entityManager->persist($original);
    $entityManager->persist($copy);
    $entityManager->flush();
}