我有一个具有多个一对多/多对一关系的数据库。例如,我有一个名为 Student 的表,以及一个名为 StudentNotes 的相关表。StudentNotes 表有一个名为 student_id 的外键。我希望外键对 delete = cascade 有约束。
我使用属性 @JoinColumn(on="CASCADE") 设置了我的 Doctrine 2 实体并更新了数据库模式。不幸的是,无论何时执行此操作,都会将 on delete 设置为“restrict”。我究竟做错了什么?
这是我的学生实体的相关代码:
/**
* @var Collection Notes
*
* @OneToMany(targetEntity="StudentNotes", mappedBy="student")
* @JoinColumn(onCascade="DELETE")
*/
protected $notes;
来自学生笔记:
/**
* @var \Entities\Students Student
*
* @ManyToOne(targetEntity="Students", inversedBy="notes")
* @OrderBy({"datetime"="DESC"})
*/
protected $student;
我什至尝试添加所有列信息(即,name="student_id"、referencedColumnName="id"),但没有任何变化。
编辑
当我最初写这个时我搞砸了:我写了@JoinColumn(onCascade="DELETE"),而我打算写@JoinColumn(onDelete="CASCADE")。无论哪种方式,这都无法正常工作:验证模式失败,因为数据库与模式不同步。