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主表中的数据

 

posted @ 2017-08-23 09:42  丶老中医  阅读(3890)  评论(0编辑  收藏  举报
一切已经开始©2018 丶老中医