0
我与Doctrine2.2.2工作结合Symfony的2.0.15。我注意到,使用类表继承,当例如:Doctrine2类表继承和级联删除
/**
* @Entity
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"person" = "Person", "employee" = "Employee"})
*/
这将创建一个外键级联删除子实体/表(在这种情况下,公司雇员)的约束。主义的documentation on this含有一种重要的前瞻性黄色的盒子,上面写着:
当你不使用SchemaTool生成所需的SQL你 应该知道,删除一类表继承利用了 外键属性的ON DELETE CASCADE在所有数据库 实现中。实现此故障自己将导致数据库 死行。
这是没有意义的我。这是否意味着如果您不使用SchemaTool,则Doctrine将创建外键级联删除约束?如果有人使用SchemaTool,Doctrine会使用它的内置级联功能吗?
好的,知道了。希望有人会清理这个语法。出于好奇,是否有任何方法可以使用Doctrine自己的级联功能而不是ON DELETE CASCADE? – nurikabe
我不这么认为,那可能是件好事。让数据库执行级联删除是正确的选择。例如,如果您手动从两个表中的任何一个中删除记录,则最终会生成一个包含一半数据的孤立记录。不完全是你想要在你的数据库中。当您希望与自己的孩子一起删除整个实体(这里的区别在于,用连接表继承结构,你有每桌一个实体在2个表,而不是一个实体)学说的级联功能更加有用。 –
优秀点。 – nurikabe