我做错了什么?
选项 - 迁移文件
Schema::create('option', function (Blueprint $table) {
$table->increments('id');
$table->integer('contents_content_id')->unsigned();
$table->timestamps();
$table->foreign('contents_content_id')
->references('content_id')
->on('contents');
});
contents-migration-file
Schema::create('contents', function (Blueprint $table) {
$table->increments('id');
$table->integer('content_id');
$table->timestamps();
});
错误
[照亮\数据库\ QueryException] SQLSTATE [HY000]:常规错误:1215无法添加外键约束(SQL:alter table
option
添加约束option_content_content_id_foreign外键(content_content_id
)引用contents
(content_id
))[PDOException] SQLSTATE [HY000]:常规错误:1215无法添加外键约束
答案 0 :(得分:0)
问题是option
表在contents
表之前创建,当您在content_id
上引用content
时,content
表不会还存在。
请注意:
每个迁移文件名都包含一个时间戳,允许Laravel确定迁移的顺序。
所以您现在要做的就是从database/migrations
文件夹中删除迁移并按顺序重新创建:首先options
然后contents
。