/ / Ograniczenie klucza obcego w Laravel Migration - mysql, klucze zagraniczne, laravel, laravel-4

Zagrożenie klucza obcego w Laravel Migration - mysql, klucze zagraniczne, laravel, laravel-4

W Laravel 4, w jaki sposób dodać ograniczenie obce w migracji?

W migracji dla mytable (które odniesienia foreigntable):

// add Column
$table
->string( "foreigntable_id", 6 );

// add FK
$table
->foreign( "foreigntable_id" )
->references( "id" )
->on( "foreigntable" );

Błąd:

[Exception]
SQLSTATE[HY000]: General error: 1005 Can"t create table "mydb.#sql-1a24_2
1a" (errno: 150) (SQL: alter table `mytable` add constraint
mytable_foreigntable_id_foreign foreign key (`foreigntable_id`) references
`foreigntable` (`id`)) (Bindings: array (
))

Zakładam, że problem polega na tym foreigntable nie istnieje, gdy MySQL próbuje dodać ograniczenie klucza obcego do mytable (ponieważ migracja, która tworzy foreigntable zostanie uruchomiony po migracja dla mytable została zakończona).

Jak mogę obejść ten problem?

Odpowiedzi:

0 dla odpowiedzi № 1

Właściwie to znalazłem odpowiedź sam.

Przenieś następujące elementy z migracji dla mytable do nowej migracji:

// add FK
$table
->foreign( "foreigntable_id" )
->references( "id" )
->on( "foreigntable" );

Ponieważ nowa migracja zostanie uruchomiona po migracji dla mytable, a także po migracji do foreigntable, obie tabele będą obecne w momencie dodania ograniczeń klucza obcego. Dlatego działa.