У меня есть эта модель; Маршрут, место проведения, маршрут.Удаление элементов OneToMany, Doctrine2
Мне нужно было много-много отношений между маршрутами и местами, но также я хотел хранить некоторые конкретные данные о связи (например, заметки, собственные фотографии и т. Д.), Поэтому я решил ввести новый объект с именем ItineraryVenue.
Так что в маршруте есть коллекция маршрутов, которые, в свою очередь, относятся к местам.
Моя проблема заключается в том, что я не могу удалить ItineraryVenue из объекта Маршрут.
$itinerary->itineraryVenues->removeElement($itineraryVenue);
$em->flush();
удаляет элемент из коллекции php, но не удаляет этот $ маршрут из базы данных.
Мне удалось заставить Doctrine2 удалить $ itineraryVenue, но только когда я комментирую Itinerary::$itineraryVenues
с orphanRemoval=true
.
Поскольку удаление сирот рассматривается как место частной собственности, оно также удаляет объект объекта, я не хочу этого.
Есть ли вариант конфигурации отношений или удаляет «вручную» оливковый способ заставить его работать так, как я хочу?
Трудно поверить, это шаблон общего отношения.
Entities определения:
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
{
}