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