【发布时间】:2013-05-31 11:49:42
【问题描述】:
我刚刚创建了一个新的 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();
});
【问题讨论】:
-
这个问题是关于为什么上面不起作用,另一个是关于MySQL 1072错误。
-
刚刚进入 Laravel 并且也成功了。我的解决方法是使用单独的迁移添加外键。它有效,但感觉有点不对。