【问题标题】:How can I deal with foreign key constraints in MySql + Laravel on delete?如何在删除时处理 MySql + Laravel 中的外键约束?
【发布时间】:2022-01-02 01:55:44
【问题描述】:

我有一个看起来像这样的 slots 表。过于简化,但有助于演示:

Date Service_id
2021-11-03 1
2021-11-04 2

基本上,用户选择一个日期和他想要的服务。这是一个预订系统。从上面的 service_id 到 services 表的 id 还有一个外键关系。

id name
1 Haircut
2 Manicure
3 Massage

我的槽表迁移包含以下内容:

Schema::table('slots', function (Blueprint $table) {
     $table->foreignId('service_id')->nullable()->constrained();
});

我现在想做的是能够删除服务,而不会从槽表中的现有记录中抛出任何错误。

【问题讨论】:

    标签: php mysql laravel eloquent


    【解决方案1】:

    你可以$table->nullOnDelete(); 但是这样槽表中的Service_id 列应该可以为空:

    Schema::table('slots', function (Blueprint $table) {
         $table->foreignId('service_id')->nullable()->constrained()->nullOnDelete();
    });
    

    这样,slots 中对应的行在Service_id 列中会为空。

    另一种方式是使用->cascadeOnDelete(),这样当你删除一个服务时,所有相关的slot都会被删除:

     Schema::table('slots', function (Blueprint $table) {
             $table->foreignId('service_id')->nullable()->constrained()->cascadeOnDelete();
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 2022-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多