我在Laravel 5.8上出现错误
我在外键约束上遇到错误。这是我的架构。
public function up()
{
Schema::create('subcategories', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('category_id')->unsigned();
$table->string('name');
$table->timestamps();
$table->foreign('category_id')->references('id')->on('categories');
});
}
public function up()
{
Schema::create('categories', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
}
答案 0 :(得分:1)
尝试一下
Schema::create('subcategories', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('category_id')->unsigned();
$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
$table->string('name');
$table->timestamps();
});
答案 1 :(得分:0)
我认为您应该尝试将Categories
放在桌子上方,并将sub categories
放在桌子下方。因为当您运行此命令时,它将首先尝试创建子类别,该子类别需要尚不存在的类别ID。
答案 2 :(得分:0)
引用键必须具有相似的数据类型。请检查表中的外键列的数据类型。整数类型的大小和符号必须相同。
答案 3 :(得分:0)
您正在categories
之后创建subcategories
表。创建subcategory
表时,值得注意的是称为categories
。因此会引发错误。
要解决此问题,您可以做两件事
categories
表之前创建subcategories
表。 (master-slave table / parent-child table)创建一个单独的迁移文件以更新外键。创建一个新文件,然后像下面这样在外键下面添加
$table->foreign('category_id')->references('id')->on('categories');