Laravel 4 架构生成器 - 循环引用
Laravel 4 Schema Builder - Circular Reference
我有一个用户 table 和一个公司 table
用户 table 有一个引用 Companies.id 的列 'company_id',公司有一个引用 Users.id
的列 'assignation'
显然,无论 table 我首先尝试创建什么,我都会收到一条错误消息,指出它无法创建引用约束,因为另一个 table 不存在。
我可以手动执行此操作,但我一直在寻找使用 artisan migrate 命令的方法。
有解决办法吗?
这是我的代码:
Schema::create('companies', function($table) {
$table->increments('id');
$table->string('name');
$table->integer('priority');
$table->string('color');
$table->string('shortname');
$table->integer('assignation');
$table->foreign('assignation')->references('id')->on('users');
$table->timestamps();
});
Schema::create('users', function($table) {
$table->increments('id');
$table->string('username');
$table->string('password');
$table->string('email');
$table->integer('security');
$table->string('token');
$table->integer('company_id');
$table->foreign('company_id')->references('id')->on('companies');
$table->timestamps();
});
你可以这样做:
Schema::create('companies', function($table) {
$table->increments('id');
$table->string('name');
$table->integer('priority');
$table->string('color');
$table->string('shortname');
$table->integer('assignation');
$table->timestamps();
});
Schema::create('users', function($table) {
$table->increments('id');
$table->string('username');
$table->string('password');
$table->string('email');
$table->integer('security');
$table->string('token');
$table->integer('company_id');
$table->foreign('company_id')->references('id')->on('companies');
$table->timestamps();
});
Schema::table('companies', function($table)
{
$table->foreign('assignation')->references('id')->on('users');
});
我有一个用户 table 和一个公司 table
用户 table 有一个引用 Companies.id 的列 'company_id',公司有一个引用 Users.id
的列 'assignation'显然,无论 table 我首先尝试创建什么,我都会收到一条错误消息,指出它无法创建引用约束,因为另一个 table 不存在。
我可以手动执行此操作,但我一直在寻找使用 artisan migrate 命令的方法。
有解决办法吗?
这是我的代码:
Schema::create('companies', function($table) {
$table->increments('id');
$table->string('name');
$table->integer('priority');
$table->string('color');
$table->string('shortname');
$table->integer('assignation');
$table->foreign('assignation')->references('id')->on('users');
$table->timestamps();
});
Schema::create('users', function($table) {
$table->increments('id');
$table->string('username');
$table->string('password');
$table->string('email');
$table->integer('security');
$table->string('token');
$table->integer('company_id');
$table->foreign('company_id')->references('id')->on('companies');
$table->timestamps();
});
你可以这样做:
Schema::create('companies', function($table) {
$table->increments('id');
$table->string('name');
$table->integer('priority');
$table->string('color');
$table->string('shortname');
$table->integer('assignation');
$table->timestamps();
});
Schema::create('users', function($table) {
$table->increments('id');
$table->string('username');
$table->string('password');
$table->string('email');
$table->integer('security');
$table->string('token');
$table->integer('company_id');
$table->foreign('company_id')->references('id')->on('companies');
$table->timestamps();
});
Schema::table('companies', function($table)
{
$table->foreign('assignation')->references('id')->on('users');
});