原则2形式:validate-schema因为约束而失败



我有一个具有多个一对多/多对一关系的数据库。例如,我有一个名为Students的表和一个名为StudentNotes的相关表。StudentNotes表有一个名为student_id的外键。我希望外键有delete = cascade的约束。

我用属性@JoinColumn(on="CASCADE")设置了Doctrine 2实体,并更新了数据库模式。不幸的是,每当它这样做时,它都会将on delete设置为"restrict"。我做错了什么?

下面是我的Students实体的相关代码:

/**
 * @var Collection Notes
 * 
 * @OneToMany(targetEntity="StudentNotes", mappedBy="student")
 * @JoinColumn(onCascade="DELETE")
 */
protected $notes;

和from StudentNotes:

 /**
 * @var EntitiesStudents Student
 * 
 * @ManyToOne(targetEntity="Students", inversedBy="notes")
 * @OrderBy({"datetime"="DESC"})
 */
protected $student;

我甚至尝试添加所有的列信息(即,name="student_id", referencedColumnName="id"),但没有任何变化。

编辑

当我最初写这个的时候我搞砸了:我写了@JoinColumn(onCascade="DELETE"),当我想写@JoinColumn(onDelete="CASCADE")。无论哪种方式,这都不能正常工作:validate-schema失败是因为数据库与模式不同步。

onCascade不存在,你需要用onDelete="CASCADE"代替。

@JoinColumn(onDelete="CASCADE")

好了,我想起来我忘了做什么了!

我忘记返回命令行并运行以下命令:

php doctrine.php orm:schema-tool:update --force

成功了

最新更新