新しい Laravel 4 プロジェクトを作成したところ、スキーマ ビルダーの外部キーの側面で奇妙なことが起こっていることがわかりました。いずれかの移行でこの方法を使用する->foreign()
と、MySQL エラー 150 と一般エラー 1005 がスローされます。laravel.com/docs のドキュメントによると、下部の 2 つのシナリオは機能するはずですか? なぜそうしないのか誰か知っていますか?
以下は機能します:
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();
});
ただし、次の 2 つは機能しません。
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();
});