我正在使用Laravel框架v.5.7创建ManyToMany关系。所以我创建了三个迁移。
模块表
Schema::create('modules', function (Blueprint $table) {
$table->increments('id');
$table->string('name')->unique();
$table->integer('price');
});
计划表
Schema::create('plans', function (Blueprint $table) {
$table->increments('id');
$table->string('stripe_id')->unique();
$table->integer('price');
$table->integer('max_users');
$table->timestamps();
});
关系表
Schema::create('plan_modules', function (Blueprint $table) {
$table->increments('id');
$table->integer('plan_id')->unsigend();
$table->integer('module_id')->unsigend();
// Keys
$table->foreign('plan_id')->references('id')->on('plans')->onDelete('cascade');
$table->foreign('module_id')->references('id')->on('modules')->onDelete('cascade');
});
运行迁移时,我得到General error: 1215 Cannot add foreign key constraint
。
任何人都知道迁移存在什么问题。 mysql的默认引擎设置为InnoDB
。
答案 0 :(得分:2)
您的上一次迁移应如下:
.container {
.block {
&.scarlet {
color: red;
body.landing & {
color: pink;
}
}
}
}
修复了拼写错误,您需要将Schema::create('plan_modules', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('plan_id')
$table->unsignedInteger('module_id');
$table->foreign('plan_id')->references('id')->on('plans')->onDelete('cascade');
$table->foreign('module_id')->references('id')->on('modules')->onDelete('cascade');
});
应用于外键定义,而不是实际的字段定义。
提供了您的迁移按照与上述相同的顺序运行的消息,它应该可以正常工作。