我试图收集一些关于以下方法的信息,以便在删除父实体时自动删除子实体。似乎最常见的方法是使用这三个注释之一: cascade={"remove"}
或 orphanRemoval=true
或 ondelete="CASCADE"
。
我对第三个有点困惑: ondelete="CASCADE"
,因为官方文件中对这个的解释非常少) ,我希望有人能够 向我确认以下信息我收集和理解从我的网络研究和经验..。
它有什么用?
cascade={"remove"}
= = > 当拥有侧实体为。即使你在一个 ManyToMany
与其他拥有侧实体。
OneToMany
或 ManyToMany
关系中)orphanRemoval=true
当拥有侧实体为 AND 且不再连接到任何其他拥有侧实体时,相反方的实体将被删除。(参考文献。< a href = “ http://ism-orm.readthedocs.org/en/last/reference/xml-mapping.html
OneToOne
、 OneToMany
或 ManyToMany
一起使用onDelete="CASCADE"
= = > 这将把 On Delete Cascade 添加到数据库中的外键列
其他资料
cascade={"remove"}
完全绕过任何外键 onDelete = CASCADEorphanRemoval
和 cascade={"remove"}
在反向实体类中定义。ondelete="CASCADE"
在所有者实体中定义@ORM\JoinColumn(onDelete="CASCADE")
,并让学说处理列名级联 = {“移除”}
/**
* @OneToMany(targetEntity="Phonenumber", mappedBy="contact", cascade={"remove"})
*/
protected $Phonenumbers
移除孤儿 = 真
/**
* @OneToMany(targetEntity="Phonenumber", mappedBy="contact", orphanRemoval=true)
*/
protected $Phonenumbers
OnDelete = “ CASCADE”
/**
* @ManyToOne(targetEntity="Contact", inversedBy="phonenumbers")
* @JoinColumn(name="contact_id", referencedColumnName="contact_id", onDelete="CASCADE")
*/
protected $contact;