我启动了一个运行 5.6 的新 Laravel 应用程序,并在运行 migrate 之前简化我一次创建多个迁移的过程。我有大量的外键用于链接以使我的数据库易于扩展。
我的问题是尝试在迁移后期出现的数据库中引用外键。我相信它不起作用,因为我尝试引用的表尚未按操作顺序创建。
例如:
create_users_table迁移:
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->integer('user_id')->nullable()->unsigned();
$table->foreign('user_id')->references('id')->on('users');
$table->integer('type_id')->nullable()->unsigned();
$table->foreign('type_id')->references('type_id')->on('types');
$table->integer('post_id')->nullable()->unsigned();
$table->foreign('post_id')->references('post_id')->on('posts');
$table->rememberToken();
$table->timestamps();
Run Code Online (Sandbox Code Playgroud)
例如:create_types_table迁移:
$table->increments('id');
$table->string('type');
$table->integer('user_id')->nullable()->unsigned();
$table->foreign('user_id')->references('user_id')->on('users')->nullable();
$table->integer('revenue_id')->nullable()->unsigned();
$table->foreign('revenue_id')->references('revenue_id')->on('revenue')->nullable();
$table->integer('hours_id')->nullable()->unsigned();
$table->foreign('hours_id')->references('hours_id')->on('hours')->nullable();
$table->integer('project_id')->nullable()->unsigned();
$table->foreign('project_id')->references('project_id')->on('projects')->nullable();
$table->integer('type_id')->nullable()->unsigned();
$table->foreign('type_id')->references('id')->on('types');
$table->timestamps();
Run Code Online (Sandbox Code Playgroud)
我在所有表格中都遵循这种相同类型的模式。我想我的问题是;这是因为表还没有创建,所以没有什么可参考的吗?有没有办法解决这个问题,或者我是否需要重新启动,创建所有表,然后为每个表添加另一个迁移以添加外键?
这可能是一个愚蠢的问题,我对 Laravel 还很陌生。这是我第一次尝试在早期将关系添加到应用程序中。