Symfony 5 嵌入表单不保留外键

时间:2021-02-04 10:10:14

标签: php forms embed symfony5

我开始研究symfony并尝试在两个实体之间建立一个嵌入形式的关系,我可以将新闻信息持久化在我的实体内,但外键没有持久化。
我尝试在打扰之前到处搜索我希望有人能帮助我。
提前致谢。

WorkEntity.php

/**
 * @ORM\Entity(repositoryClass=WorkEntityRepository::class)
 */
class WorkEntity
{
/** other attribut**/

 /**
     * @ORM\OneToMany(targetEntity=Address::class, mappedBy="workEntity",cascade={"persist"})
     */
    private $address;

 /**
     * WorkEntity constructor.
     */
    public function __construct()
    {
    
        $this->address = new ArrayCollection();
    }
 /**
     * @return Collection|Address[]
     */
    public function getAddress(): Collection
    {
        return $this->address;
    }

    /**
     * @param Address $address
     * @return $this
     */
    public function addAddress(Address $address): self
    {
        if (!$this->address->contains($address)) {
            $this->address[] = $address;
            $address->setWorkEntity($this);
        }

        return $this;
    }

    /**
     * @param Address $address
     * @return $this
     */
    public function removeAddress(Address $address): self
    {
        if ($this->address->removeElement($address)) {
            // set the owning side to null (unless already changed)
            if ($address->getWorkEntity() === $this) {
                $address->setWorkEntity(null);
            }
        }

        return $this;
    }
}

WorkEntityController.php

/**
     * @Route("/{id}/edit", name="work_entity_edit", methods={"GET","POST"})
     * @param Request $request
     * @param WorkEntity $workEntity
     * @return Response
     */
    public function edit(Request $request, WorkEntity $workEntity): Response
    {
        $form = $this->createForm(WorkEntityType::class, $workEntity);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            $this->getDoctrine()->getManager()->flush();
            $this->addFlash('success', 'Modifié avec succès');

            return $this->redirectToRoute('work_entity_index');
        }

        return $this->render('admin/work_entity/edit.html.twig', [
            'work_entity' => $workEntity,
            'form' => $form->createView(),
            'current_menu' => 'work_entity',
            'current_section' => 'administrative'
        ]);
    }

WorkEntityType.php

class WorkEntityType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
/**other type**/

  ->add('address', CollectionType::class, [
                'entry_type' => AddressType::class,
                'label' => 'Adresse de la société',
                'entry_options' => ['label' => false],
                'allow_add' => true,
                'allow_delete' => true,
//                'by_reference' => false,

            ])
}

当我通过引用使用时,我遇到了一个问题,例如找不到将我的地址依赖于 workEntity 的属性。
引用错误 =>(无法确定类“App”中属性“address”的访问类型\Entity\WorkEntity”。)
如果没有 by_reference,我可以将实体保存在地址内,但不能保存外键。 如果你知道我可以做什么来在我的地址中添加 fereign 键,我提前感谢你。

1 个答案:

答案 0 :(得分:0)

多次尝试后我找到了解决方案我的错误来自WorkEntity中的多个属性地址我写了这个单数。

STATISTICS

之后我在我的类型 WorkEntityType 中取消注释 by_reference ,现在当我在我的工作实体中添加一个地址时,以下外键保存在我的实体“地址”中

相关问题