我有照片实体,它与标签实体具有人与人之间的关系。
/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="Tag", cascade={"persist", "remove"})
* @ORM\JoinTable(name="photos_tags",
* joinColumns={@ORM\JoinColumn(name="photo_id", referencedColumnName="id", onDelete="CASCADE")},
* inverseJoinColumns={@ORM\JoinColumn(name="tag_id", referencedColumnName="id", onDelete="CASCADE")}
* )
**/
protected $tags;
假设我有一个具有TagA和TagB的PhotoA。但我也有PhotoB也有TagA。当我删除PhotoB时,TagA也被删除。这是我不想要的。我定义了级联操作,因为我认为这应该只删除JoinColumn值...但是看起来TagEntity也被删除为级联操作。
我哪里错了?
答案 0 :(得分:0)
/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="Tag")
* @ORM\JoinTable(name="photos_tags",
* joinColumns={@ORM\JoinColumn(name="photo_id", referencedColumnName="id", onDelete="CASCADE")},
* inverseJoinColumns={@ORM\JoinColumn(name="tag_id", referencedColumnName="id")}
* )
**/
protected $tags;
此注释解决了这个问题。我没有意识到,学说自己管理这些现实并删除连接表中的记录而不需要描述。显然如果要删除和标记实体,那么应该注释级联操作。