我有这个模型; 行程,地点,行程温馨。删除OneToMany元素,Doctrine2
我需要行程和场地之间的多对多关系,但我也想存储一些关于关系的特定数据(比如便条,自己的照片等),所以我决定引入一个名为ItineraryVenue的新实体。
所以Itinerary具有ItineraryVenues的集合,而ItineraryVenues又是指Venues。
我的问题是我无法从行程对象中删除ItineraryVenue。
$itinerary->itineraryVenues->removeElement($itineraryVenue);
$em->flush();
从php集合中移除元素,但不会从数据库中删除此$ itineraryVenue。
我设法强制Doctrine2删除$ itineraryVenue,但只有当我注释Itinerary::$itineraryVenues
与orphanRemoval=true
。
由于孤儿去除将Venue作为私人财产处理,因此它也删除了Venue实体,我不想那样做。
是否有关系配置选项或正在删除“手工”olny的方式,使其工作,因为我想?
很难相信它,它是一种常见的关系模式。
实体的定义:
class Itinerary
{
/**
* @ORM\OneToMany(targetEntity="ItineraryVenue", mappedBy="itinerary", cascade={"persist", "remove"})
*/
private $itineraryVenues;
function __construct()
{
$this->itineraryVenues = new ArrayCollection();
}
}
class ItineraryVenue
{
/**
* @ORM\ManyToOne(targetEntity="Itinerary", inversedBy="itineraryVenues")
*/
private $itinerary;
/**
* @ORM\ManyToOne(targetEntity="Venue")
*/
private $venue;
function __construct()
{
}
}
class Venue
{
}