Laravel 4 Schema Builder - 循环参考

时间:2015-03-16 18:43:03

标签: laravel database-schema circular-dependency

我有一个Users表和一个公司表

用户表格中有一列' company_id'参考Companies.id和公司有专栏'分配'它引用了Users.id

显然,无论我首先尝试创建哪个表,我都会收到错误消息,说它无法创建引用约束,因为另一个表不存在。

我可以手动执行此操作,但我一直在寻找使用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();

        });

1 个答案:

答案 0 :(得分:2)

你可以这样做:

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');
    });