laravel外鍵約束添加教程


laravel外鍵約束添加教程

外鍵約束

Laravel還提供了創建外鍵約束的支持,用於在數據庫層面強制引用完整性。例如,我們在posts表中定義了一個引用users表的id列的user_id列:

Schema::table('posts', function ($table) {
    $table->integer('user_id')->unsigned();
    $table->foreign('user_id')->references('id')->on('users');
});

你還可以為約束的“on delete”和“on update”屬性指定期望的動作:

$table->foreign('user_id')
      ->references('id')->on('users')
      ->onDelete('cascade');

要刪除一個外鍵,可以使用dropForeign方法。外鍵約束和索引使用同樣的命名規則——連接表名、外鍵名然后加上”_foreign”后綴:

$table->dropForeign('posts_user_id_foreign');
解釋:
第一種情況:
這是數據庫外鍵定義的一個可選項,用來設置當主鍵表中的被參考列的數據發生變化時,外鍵表中響應字段的變換規則的。update 則是主鍵表中被參考字段的值更新,delete 是指在主鍵表中刪除一條記錄:

on update 和 on delete 后面可以跟的詞語有四個
no action , set null , set default ,cascade
no action 表示 不做任何操作,
set null 表示在外鍵表中將相應字段設置為null
set default 表示設置為默認值
cascade 表示級聯操作
就是說,如果主鍵表中被參考字段更新,外鍵表中也更新,主鍵表中的記錄被刪除,外鍵表中改行也相應刪除
第二種情況:
只加
$table->foreign('user_id')
      ->references('id')->on('users');

當你刪除主表中的數據時,如果外鍵post表中有user_id的值,那么將提示你不可以刪除user主表中的數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM