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

问题描述 投票:0回答:1

我正在学习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
        ])
;
symfony doctrine
1个回答
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();
}
© www.soinside.com 2019 - 2024. All rights reserved.