【发布时间】:2015-08-27 06:54:03
【问题描述】:
我有这个模型; 行程、地点、行程地点。
我需要路线和地点之间的多对多关系,但我还想存储一些关于这种关系的特定数据(比如笔记、自己的照片等),所以我决定引入一个名为 ItineraryVenue 的新实体。
所以 Itinerary 有 ItineraryVenues 的集合,这些集合又引用了 Venues。
我的问题是我无法从 Itinerary 对象中删除 ItineraryVenue。
$itinerary->itineraryVenues->removeElement($itineraryVenue);
$em->flush();
从 php 集合中删除元素,但不会从数据库中删除此 $itineraryVenue。
我已经设法强制 Doctrine2 删除 $itineraryVenue,但前提是我使用 orphanRemoval=true 注释 Itinerary::$itineraryVenues。
由于孤儿移除将 Venue 视为私有财产,它也会移除 Venue 实体,我不希望这样。
是否有关系配置选项或正在“手动”删除使其按我想要的方式工作?
难以置信,这是一种常见的关系模式。
实体定义:
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
{
}
【问题讨论】:
标签: php doctrine-orm