Laravel 4 Ошибка при миграции 1072

У меня есть пара миграций в новом проекте Laravel 4. Один для регионов, а другой для областей. В каждом регионе есть несколько областей, и области относятся к регионам.

Я использовал Laravel 4 и функции миграции в ряде случаев, но никогда раньше не сталкивался с этой проблемой. Когда я запускаю php artisan migrate:install за которым следует php artisan migrate я получаю следующую ошибку:

 $ php artisan migrate [Exception] SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'region_ id' doesn't exist in table (SQL: alter table `areas` add constraint areas_r egion_id_foreign foreign key (`region_id`) references `regions` (`id`)) (Bi ndings: array ( )) migrate [--bench[="..."]] [--database[="..."]] [--path[="..."]] [--package[="... "]] [--pretend] [--seed] 

// Миграция регионов

 class CreateRegionsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { // Creates the regions table Schema::create('regions', function($table) { $table->engine = 'InnoDB'; $table->increments('id'); $table->string('name', 160)->unique(); $table->timestamps(); }); } } 

// Перемещение областей

 class CreateAreasTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { // Creates the cemeteries table Schema::create('areas', function($table) { $table->engine = 'InnoDB'; $table->increments('id'); $table->foreign('region_id')->references('id')->on('regions'); $table->string('name', 160)->unique(); $table->timestamps(); }); } } 

Вы должны создать столбец, связанный с внешним ключом:

 class CreateAreasTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { // Creates the cemeteries table Schema::create('areas', function($table) { $table->engine = 'InnoDB'; $table->increments('id'); $table->integer('region_id')->unsigned(); $table->foreign('region_id')->references('id')->on('regions'); $table->string('name', 160)->unique(); $table->timestamps(); }); } } 

Иногда (в зависимости от сервера базы данных) вам придется создавать внешние ключи в два этапа:

 class CreateAreasTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { // Create the table and the foreign key column Schema::create('areas', function($table) { $table->engine = 'InnoDB'; $table->increments('id'); $table->integer('region_id')->unsigned(); $table->string('name', 160)->unique(); $table->timestamps(); }); // Create the relation Schema::tabe('areas', function($table) { $table->foreign('region_id')->references('id')->on('regions'); }); } } 

и не забудьте сделать внешние ключи неподписанными.

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