我开始研究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 键,我提前感谢你。
答案 0 :(得分:0)
多次尝试后我找到了解决方案我的错误来自WorkEntity中的多个属性地址我写了这个单数。
STATISTICS
之后我在我的类型 WorkEntityType 中取消注释 by_reference ,现在当我在我的工作实体中添加一个地址时,以下外键保存在我的实体“地址”中