【发布时间】:2016-10-04 09:41:33
【问题描述】:
问题
我想给表添加外键。当我运行 first 迁移 create_posts_table 时,看起来像这样:
Schema::create('posts', function(Blueprint $table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->unsignedInteger('user_id')->index();
// . . .
});
Schema::table('posts', function(Blueprint $table)
{
$table->foreign('user_id')->references('id')
->on('users')->onDelete('cascade');
});
抛出以下错误:
[Illuminate\Database\QueryException] SQLSTATE[HY000]:
一般错误:1215 无法添加外键约束(SQL:alter table
posts添加约束posts_user_id_foreign外键 (user_id) 引用users(id) 删除级联)
这是因为users表还没有创建,所以无法在posts表上创建用户的引用外键。
可能的解决方案
解决此问题的方法是在创建所有表后添加具有新迁移的外键。但是,它对我来说似乎很笨重。
问题
如何在各自表的迁移中定义外键,而不是在创建所有表后通过不同的迁移单独添加它们?
【问题讨论】:
标签: laravel laravel-5 laravel-5.2 laravel-migrations