问题
我想向表中添加外键。当我运行我的第一次迁移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');
});
抛出以下错误:
[照亮\数据库\查询异常] SQLSTATE [HY000]:
一般错误:1215 无法添加外键约束(SQL: 删除级联时更改表
posts
添加约束posts_user_id_foreign
外键(user_id
)引用users
( ))id
这是因为该users
表尚未创建,因此未能在该表上创建用户的引用外键posts
。
可能的解决方案
解决这个问题的方法是在所有表都创建完成后,通过新的迁移添加外键。但是,这对我来说似乎很笨拙。
问题
如何在各自表的迁移中定义外键,而不是在创建所有表后使用不同的迁移单独添加它们?