【发布时间】:2018-06-28 21:06:51
【问题描述】:
假设我们有表 A、B 和 C(相应的时间戳)
Table ZZ
id
some_fieldZ
Table YY
id
some_fieldY
Table XX
id
b_id
a_id
some_fieldX
Schema::table('XX', function (Blueprint $table) {
$table->foreign('ZZ')->references('id')->on('ZZ')->onDelete('cascade');
$table->foreign('YY')->references('id')->on('YY')->onDelete('cascade');
});
是否可以在删除 YY 或 ZZ 中的记录时,相应地删除 XX(也可能是 YY/ZZ)而不改变其结构(将 FK 中的一个从一个表切换到另一个)?
编辑:根据 id 向删除函数中添加一行或拥有一个观察者是我正在考虑的两个解决方案,只是试图探索其他可能的方法来实现它
【问题讨论】:
-
是的,可能,你正在做的事情可以解决问题
-
您确实可以在表中的 FK 上使用
onDelete,或者创建一个观察者来处理删除。我个人更喜欢观察者方法,因为这样你就可以在你的 eloquent 模型上使用SoftDeletes。 -
事情是,如果我删除 YY 表中的记录,上面的示例代码“不起作用”,它不会在 XX 中删除,我希望它能够
-
那是因为您必须在其他表的外键上设置
onDelete才能使其正常工作。
标签: php mysql laravel migration