0

I have this four tables but I'm getting the above error in Laravel eloquent. can anyone tell what am I missing here? But when I remove the foreign method the migration works fine.

  Schema::create('students', function (Blueprint $table) {
        $table->increments('id')->unsigned();
        $table->string('first_name');
        $table->string('last_name');
        $table->string('middle_name');
        $table->date('birthdate');
        $table->integer('degree_id')->unsigned();
        $table->index(['id','first_name', 'last_name']);
        $table->timestamps();

        $table->foreign('degree_id')
              ->references('id')
              ->on('degrees');


    });

I included unsigned method but still getting the above error.

   Schema::create('degrees', function (Blueprint $table) {
        $table->increments('id')->unsigned();
        $table->string('description');
        $table->string('category_id');
        $table->integer('duration');
        $table->string('sub_code');
        $table->timestamps();

        $table->foreign('sub_code')
              ->references('id')
              ->on('courses');
    });

Here's the other two tables.

        Schema::create('instructors', function (Blueprint $table) {
        $table->increments('id')->unsigned();
        $table->string('first_name');
        $table->string('middle_name');
        $table->string('last_name');
        $table->date('birthdate');
        $table->index(['id', 'first_name', 'last_name']);
        $table->timestamps();
    });

And the last table:

Schema::create('courses', function (Blueprint $table) {
        $table->string('id')->unique();
        $table->string('description');
        $table->integer('no_of_units');
        $table->string('room_id');
        $table->date('schedule');         
        $table->integer('instructor_id')->unsigned();
        $table->timestamps();

        $table->foreign('instructor_id')
              ->references('id')
              ->on('instructors');

    });
Jay Gorio
  • 335
  • 2
  • 4
  • 22
  • also take a look here: http://stackoverflow.com/questions/22615926/migration-cannot-add-foreign-key-constraint-in-laravel – Amir Bar Jan 20 '16 at 16:37

1 Answers1

1

The order of your migration files matters. If you're creating the students table first before the degrees table, your foreign key constraint will fail because the degrees table hasn't been created yet.

To solve this, you can move all your foreign key constraints into a migration create_foreign_key_constraints_migration which should run last.

CodePuppet
  • 191
  • 4