我正在遇到一个烦人的问题,即如何持久化一个具有一个或多个OneToMany子实体的实体。
我有一个“Buchung”实体,它可以拥有多个“Einsatztage”(可以翻译为一个有多天的事件)。
在“Buchung实体”中,我有:
然后有一个“Einsatztag”实体,它有一个$Buchung_id变量用于引用“Buchung”。
现在,如果我尝试将一个对象持久化到数据库中,“Einsatztag”表的外键始终为空。 $ buchung = new Buchung();
我有一个“Buchung”实体,它可以拥有多个“Einsatztage”(可以翻译为一个有多天的事件)。
在“Buchung实体”中,我有:
/**
* @param \Doctrine\Common\Collections\Collection $property
* @ORM\OneToMany(targetEntity="Einsatztag", mappedBy="buchung", cascade={"all"})
*/
private $einsatztage;
$einsatztage在__constructor()中被设置为ArrayCollection()。然后有一个“Einsatztag”实体,它有一个$Buchung_id变量用于引用“Buchung”。
/**
* @ORM\ManyToOne(targetEntity="Buchung", inversedBy="einsatztage", cascade={"all"})
* @ORM\JoinColumn(name="buchung_id", referencedColumnName="id")
*/
private $Buchung_id;
现在,如果我尝试将一个对象持久化到数据库中,“Einsatztag”表的外键始终为空。 $ buchung = new Buchung();
$buchung->setEvent( $r->request->get("event_basis"));
$buchung->setStartDate(new \DateTime($r->request->get("date_from")));
$buchung->setEndDate(new \DateTime($r->request->get("date_to")));
$von = $r->request->get("einsatz_von");
$bis = $r->request->get("einsatz_bis");
$i = 0;
foreach($von as $tag){
$einsatztag = new Einsatztag();
$einsatztag->setNum($i);
$einsatztag->setVon($von[$i]);
$einsatztag->setBis($bis[$i]);
$buchung->addEinsatztage($einsatztag);
$i++;
}
$em = $this->getDoctrine()->getManager();
$em->persist($buchung);
foreach($buchung->getEinsatztage() as $e){
$em->persist($e);
}
$em->flush();