【发布时间】:2018-06-16 06:30:36
【问题描述】:
我有一个小问题。我有一个对象“角色”,他有几个集合。 我有一个呈现所有集合并允许我添加和删除集合的表单。 之后,我转储了所有信息,并且对象“角色”包含了我在提交表单时发送的所有集合。 当我持久化并刷新数据时,学说会保存角色而不是集合
这是我的配置:
实体角色
/**
* @ORM\OneToMany(targetEntity="PersonaDomicilio",mappedBy="idPersona",cascade={"persist"},orphanRemoval=true)
*/
private $domicilios;
public function __construct() {
$this->domicilios = new ArrayCollection();
}
public function getDomicilios() {
return $this->domicilios;
}
public function addDomicilio(PersonaDomicilio $persona_domicilio) {
$persona_domicilio->setIdPersona($this);
$this->domicilios[] = $persona_domicilio;
}
public function removeDomicilio(PersonaDomicilio $persona_domicilio) {
$this->domicilios->removeElement($persona_domicilio);
}
Entity PersonaDomicilio
/**
* @var \AppBundle\Entity\Persona
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Persona",inversedBy="domicilios")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="id_persona", referencedColumnName="id_persona")
* })
*/
private $idPersona;
角色类型
->add('domicilios', CollectionType::class, array(
'entry_type' => PersonaDomicilioType::class,
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
'label' => false
))
控制器动作
$em = $this->getDoctrine()->getManager();
$persona = new Persona();
$formulario = $this->createForm(
PersonaType::class,
$persona,
array('action' => $this->generateUrl('persona_create'),
'method' => 'POST')
);
$formulario->handleRequest($request);
$persona->setFisicaJuridica('F');
$em->persist($persona);
$em->flush();
我不想使用 foreach 手动持久化所有集合,因为级联持久化将有助于做到这一点。 我不得不说我做了几次测试,但我不明白为什么不起作用。
Pd:“id_persona”也正确设置为集合。
【问题讨论】:
标签: symfony collections persist