我正在将 Doctrine2.2.2 与 Symfony 2.0.15 一起使用。我注意到在使用类表继承时,例如:
/**
* @Entity
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"person" = "Person", "employee" = "Employee"})
*/
这将在子实体/表(在本例中为员工)上创建外键级联删除约束。Doctrine在这方面的文档包含一个看起来很重要的黄色框,上面写着:
当您不使用 SchemaTool 生成所需的 SQL 时,您应该知道删除类表继承会在所有数据库实现中使用外键属性 ON DELETE CASCADE。自己未能实现这一点将导致数据库中出现死行。
这对我来说没有意义。这是否意味着如果您不使用 SchemaTool 那么 Doctrine 将创建外键级联删除约束?如果确实使用了 SchemaTool,Doctrine 会使用它的内置级联功能吗?