【发布时间】:2017-06-05 18:05:00
【问题描述】:
我尝试使用迁移添加外键约束。迁移完成,没有任何错误。但是,在检查数据库时,不会将外键约束添加到表中。除了 FK 约束之外,迁移中指定的其他内容都可以正常工作。
我的带有 FK 的数据透视表:
Schema::create('book_author', function (Blueprint $table) {
$table->integer('book_id')->unsigned();
$table->integer('author_id')->unsigned();
$table->foreign('book_id')->references('id')->on('book')->onDelete('restrict')->onUpdate('cascade');
$table->foreign('author_id')->references('id')->on('author')->onDelete('restrict')->onUpdate('cascade');
$table->primary(['book_id','author_id']);
});
Schema::enableForeignKeyConstraints();
作者表:
Schema::create('author', function (Blueprint $table) {
$table->increments('id');
$table->string('email', 250)->unique();
});
书桌:
Schema::create('book', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
});
这里有什么我遗漏的吗?
【问题讨论】:
-
哪个数据库?您如何检查以确保外键存在?
-
通过为两列添加一个带有虚假“id”值的字段。
-
你的表引擎是 InnoDB 还是 MyISAM?
-
您是否尝试过我在回答中建议的更改?如果是这样,问题仍然存在吗?
-
是的。结果相同。没有不同。顺便说一句,我没有拒绝你的回答。
标签: php laravel laravel-migrations