我刚刚创建了一个新的 Laravel 4 项目,并且发现架构构建器的外键方面发生了奇怪的事情。如果我->foreign()
在任何迁移中使用该方法,我会抛出 MySQL 错误 150 和一般错误 1005。根据 laravel.com/docs 上的文档,底部的两个场景应该有效吗?有谁知道他们为什么不这样做?
以下确实有效:
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();
});
但是这两个不起作用:
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();
});