Ho appena creato un nuovo progetto Laravel 4 e sto scoprendo cose strane che accadono con l'aspetto chiave esterna del generatore di schemi. Se utilizzo il metodo ->foreign()
in una delle mie migrazioni, ottengo 150 errori MySQL e errore generale 1005. Secondo la documentazione su laravel.com/docs, i due scenari in basso dovrebbero funzionare? Qualcuno sa perché non lo fanno?Chiavi esterne nel problema delle migrazioni di Laravel 4
Il seguente funziona:
Schema::create('areas', function($table)
{
$table->engine ='InnoDB';
$table->increments('id');
$table->integer('region_id')->references('id')->on('regions');
$table->string('name', 160);
$table->timestamps();
});
Ma questi due non funzionano:
Schema::create('areas', function($table)
{
$table->engine ='InnoDB';
$table->increments('id');
$table->foreign('region_id')->references('id')->on('regions');
$table->string('name', 160);
$table->timestamps();
});
Schema::create('areas', function($table)
{
$table->engine ='InnoDB';
$table->increments('id');
$table->integer('region_id');
$table->foreign('region_id')->references('id')->on('regions');
$table->string('name', 160);
$table->timestamps();
});
possibile duplicato del [laravel 4 Migrazioni gettare 1072 di errore] (http://stackoverflow.com/questions/16928032/laravel-4-migrations-throwing-1072-error) –
Questa domanda è sul perché il doesn di cui sopra funziona, l'altro riguarda gli errori di MySQL 1072. – JasonMortonNZ
Basta entrare in Laravel e colpire anche questo. La mia soluzione alternativa consisteva nell'aggiungere chiavi esterne utilizzando una migrazione separata. Funziona ma sembra sbagliato. – joemaller