我正在学习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
])
;
如果我对您的理解正确,您希望通过一次提交表单将多个实体保存到数据库中。我会将所有表单数据克隆到一个新对象中,进行更改,然后将所有数据持久保存并刷新,如下所示:
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();
}