2013-09-25 14 views
8

Ecco il mio codice di migrazione:laravel 4 Migrazione - Impossibile aggiungere vincolo di chiave esterna

public function up() 
{ 
    Schema::create('foos', function(Blueprint $table) { 
     // Primary key 
     $table->increments('id'); 

     // Standard 
     $table->engine = 'InnoDB'; 
     $table->timestamps(); 
     $table->softDeletes(); 
    }); 

    Schema::create('bars', function(Blueprint $table) { 
     // Primary key 
     $table->increments('id'); 

     // Define foreign key 
     $table->integer('foo_id')->unsigned; 

     // Foreign key contraints 
     // NOTE: causes "General error: 1215 Cannot add foreign key constraint" 
     // $table->foreign('foo_id')->references('id')->on('foos'); 

     // Standard 
     $table->engine = 'InnoDB'; 
     $table->timestamps(); 
     $table->softDeletes(); 
    }); 
} 

public function down() 
{ 
    Schema::drop('foos'); 
    Schema::drop('bars'); 
} 

Quando il codice per definire il vincolo di chiave esterna non è commentata, ottengo il seguente errore nella riga di comando: generale errore: 1215 Impossibile aggiungere il vincolo di chiave esterna.

Qualche idea su cosa sto facendo male?

risposta

16
$table->integer('foo_id')->unsigned; 

dovrebbe essere

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

oppure è possibile utilizzare la versione corta: "Doh"

$table->unsignedInteger('foo_id'); 
+1

Nelle famose parole di Omero,. Grazie! – StackOverflowNewbie

+5

Non picchiarti - posso solo rispondere alla tua domanda perché ho fatto esattamente la stessa cosa. :-) – ceejayoz

Problemi correlati