Doctrine orm 条令2 orm:验证模式因约束而失败

Doctrine orm 条令2 orm:验证模式因约束而失败,doctrine-orm,database-schema,foreign-key-relationship,cascade,Doctrine Orm,Database Schema,Foreign Key Relationship,Cascade,我有一个具有多个一对多/多对一关系的数据库。例如,我有一个名为Students的表和一个名为StudentNotes的相关表。StudentNotes表有一个名为student_id的外键。我希望外键具有delete=cascade的约束 我用属性@JoinColumn(on=“CASCADE”)设置了我的Doctrine 2实体,并更新了数据库模式。不幸的是,每当执行此操作时,它都会将on delete设置为“restrict”。我做错了什么 以下是我的学生实体的相关代码: /** * @v

我有一个具有多个一对多/多对一关系的数据库。例如,我有一个名为Students的表和一个名为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\u id”,referencedColumnName=“id”),但没有任何变化

编辑

当我最初写这篇文章的时候,我把事情搞砸了:我写了@JoinColumn(onCascade=“DELETE”),当时我打算写@JoinColumn(onDelete=“CASCADE”)。无论哪种方式,这都无法正常工作:验证架构失败,因为数据库与架构不同步。

onCascade不同步,您需要改为onDelete=“CASCADE”


好吧,我知道我忘记做什么了

我忽略了返回命令行并运行以下命令:

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

这就成功了

Oops,那是个印刷错误。我实际上使用了@JoinColumn(onDelete=“CASCADE”)。没有骰子。
php doctrine.php orm:schema-tool:update --force