2017-10-31 1 views
0

Ich habe viele Dinge ausprobiert, aber es hat nicht funktioniert. Lassen Sie mich verwenden, was ich tat:Ich möchte Fremdschlüssel zwischen zwei oder mehr Tabellen definieren

enter image description here

Und diese Tabelle: enter image description here

ich diese Störung erhalte:

SQLSTATE[HY000]: General error: 1005 Can't create table cmpe . #sql-2068_94 (errno: 150 "Foreign key constraint i s incorrectly formed")

Können Sie mir bitte helfen?

+0

Alle Ihre IDs müssen integer und unsigned sein. Im Voraus PLZ hier anstelle von Bildern. –

Antwort

0

Alle Ihre fremden Felder müssen Int anstelle von String sein. Machen Sie sie auch unsigniert. Das ist das richtige Format zum Erstellen des Fremdschlüssels.

Ein Beispiel:

$table->integer('myForeignID')->unsigned(); 

Diese Linien können, wie es ist höchstwahrscheinlich nicht erforderlich entfernt:

$table->foreign('year')->references('id')->on('course'); 
$table->foreign('semester')->references('id')->on('course'); 

Auch die Tabellen Kurs und Lehrer vor Tisch Beiträge machen.

+0

Ich habe den Code sir. :) – cugurel

+0

Vielen Dank Herr. Alle Tische sind fertig. – cugurel

0
public function up() 
{ 
    Schema::create('posts', function (Blueprint $table) { 

     $table->engine = 'InnoDB'; 
     $table->increments('id'); 
     $table->integer('instructors_id')->unsigned()->nullable(); 
     $table->integer('course_id')->unsigned()->nullable(); 
     $table->integer('year')->unsigned()->nullable(); 
     $table->integer('semester')->unsigned()->nullable(); 
     $table->string('body'); 
     $table->integer('post_id'); 
     $table->rememberToken(); 
     $table->timestamps(); 

     $table->foreign('instructors_id')->references('id')->on('instructors'); 
     $table->foreign('course_id')->references('id')->on('course'); 
     $table->foreign('year')->references('id')->on('course'); 
     $table->foreign('semester')->references('id')->on('course'); 

    }); 
} 


public function up() 
{ 
    Schema::create('course', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('title'); 
     $table->integer('semester'); 
     $table->integer('year'); 
    }); 
} 
Verwandte Themen