Skip to content
Advertisement

SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint in laravel 8

hi i am trying to make category and then subcategory so if a category is deleted subcategory would also be deleted here what i have done so far created a model called category also created a subcategory model

run the migration for the category

 public function up()
    {
        Schema::create('categories', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('image');
            $table->string('slug');
            $table->timestamps();
        });
    }

in my subcategories migration i have defined the

public function up()
   {
       Schema::create('subcategories', function (Blueprint $table) {
           $table->increments('id');
           $table->unsignedBigInteger('category_id');
           $table->string('name');
           $table->string('slug');
           $table->timestamps();

           $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
       });
   }


when i try to migrate i am running in to error which states that IlluminateDatabaseQueryException

SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table subcategories add constraint subcategories_category_id_foreign foreign key (category_id) references categories (id) on delete cascade)

my laravel version is 8.40 nd sqlversion is 5.7.24

did change the timestamp of both tables still it didn’t work

2021_06_09_000000_create_categories_table.php 2021_06_10_055026_create_subcategories_table.php

even i tried

$table->foreignId('category_id')->constrained('categories');

Advertisement

Answer

Schema::create('categories', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('image');
    $table->string('slug');
    $table->timestamps();
});
Schema::create('subcategories', function (Blueprint $table) {
    $table->increments('id');
    $table->unsignedInteger('category_id');
    $table->string('name');
    $table->string('slug');
    $table->timestamps();

    $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
        });
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement