首页 > 解决方案 > 如果父表中的行被删除,如何从子表中自动删除行

问题描述

我有两张桌子(客户和预订)

客户表:

|       id       |
|      name      |
|   created_at   |
|   updated_at   |

预订表:

|       id         |
|     product      |
|   customer_id    |
|    created_at    |
|    updated_at    |

如何创建一个迁移文件,在删除客户时删除与客户相关的所有预订?

标签: mysqllaraveldatabase-designeloquent

解决方案


只需将外键 onDelete 设置为级联

Schema::create('bookings_table', function (Blueprint $table) {
    $table->increments('id');
    $table->string('product');
    $table->unsignedInteger('customer_id');
    $table->timestamps();

    $table->foreign('customer_id')
        ->references('id')
        ->on('customer_table')
        ->onDelete('cascade')
        ->onUpdate('cascade');
});

推荐阅读