簡體   English   中英

如何在刪除時處理 MySql + Laravel 中的外鍵約束?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM