2017-03-29 2 views
1

Ich versuche, einen Fremdschlüssel der 'Benutzer' Tabelle hinzuzufügen. Dies sind die Zeitstempel der MigrationEloquent Foreign-Key-Einschränkung ist falsch gebildet Laravel

eloquent migrations

Und das ist der Code:

Schema::create('types', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('types'); 
     $table->timestamps(); 
    }); 

Schema::create('users', function (Blueprint $table) { 
     //... 
     $table->integer('type')->length(10)->unsigned(); 
     $table->foreign('type')->references('id')->on('types')->onDelete('cascade'); 
     $table->rememberToken(); 
     $table->timestamps(); 
    }); 

Ich weiß wirklich nicht, was ich falsch machen.

EDIT Hier ist, was nach den Vorschlägen geschieht, die ich erhalten

error message

Antwort

3

Versuchen Sie, die Fremdschlüssel nur nach Sie die Tabelle erstellt, dh hinzuzufügen:

public function up() 
{ 
    Schema::create('users', function (Blueprint $table) { 
     //... 
     // $table->integer('type')->length(10)->unsigned(); 
     $table->unsignedInteger('type');  
     $table->rememberToken(); 
     $table->timestamps(); 
    }); 

    Schema::table('users', function (Blueprint $table) { 
     $table->foreign('type')->references('id')->on('types')->onDelete('cascade'); 
    }); 
} 

Und wahrscheinlich ist es besser zu verwenden $table->unsignedInteger('type');

Update:

Die Schlussfolgerung ist, dass type ein reserverd Wort in MYSQL ist.