[英]How can I deal with foreign key constraints in MySql + Laravel on delete?
我有一个看起来像这样的插槽表。 过于简化,但有助于演示:
日期 | 服务标识 |
---|---|
2021-11-03 | 1 |
2021-11-04 | 2 |
基本上,用户选择一个日期和他想要的服务。 这是一个预订系统。 从上面的 service_id 到services表的 id 还有一个外键关系。
ID | 姓名 |
---|---|
1 | 理发 |
2 | 修指甲 |
3 | 按摩 |
我对插槽表的迁移包含以下内容:
Schema::table('slots', function (Blueprint $table) {
$table->foreignId('service_id')->nullable()->constrained();
});
我现在想要做的是能够删除服务,而不会从插槽表中的现有记录中抛出任何错误。
你可以$table->nullOnDelete(); 但是这样,槽表中的 Service_id 列应该可以为空:
Schema::table('slots', function (Blueprint $table) {
$table->foreignId('service_id')->nullable()->constrained()->nullOnDelete();
});
这样,插槽中的相应行将在Service_id
列中具有 null。
另一种方法是使用->cascadeOnDelete()
,这样当你删除一个服务时,所有相关的槽都会被删除:
Schema::table('slots', function (Blueprint $table) {
$table->foreignId('service_id')->nullable()->constrained()->cascadeOnDelete();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.