[英]Cannot add foreign key constraint in Laravel
我有一个用户属于团队的应用程序。 这是我的测试:
/** @test */
public function it_has_many_users()
{
$team = factory(Team::class)->create();
$users = factory(User::class, 3)->create([
'team_id' => $team->getKey(),
]);
$this->assertEquals(3, $team->users->count());
}
我在用户表上有一个外键设置,如下所示:
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('team_id')->nullable();
$table->foreign('team_id')
->references('id')
->on('teams')
->onUpdate('cascade')
->onDelete('cascade');
});
迁移还有更多,但为简单起见,我仅包含必要的代码。 这是我的teams
迁移:
Schema::create('teams', function (Blueprint $table) {
$table->bigIncrements('id');
});
当我运行测试时,出现以下错误:
Illuminate \\ Database \\ QueryException:SQLSTATE [HY000]:常规错误:1215无法添加外键约束(SQL:alter table
users
添加约束users_team_id_foreign
外键(team_id
)在更新级联上的删除级联上引用teams
(id
))
我不确定是什么问题,因为我在其他表上也以相同的方式设置了其他外键,并且它们工作正常。 我确实正确设置了所有关系。
在用户表迁移发生之前,将团队迁移设置为更早。 否则,在创建用户表时就没有引用的team表,因此会出现错误。
IE浏览器
Schema::create('teams', function (Blueprint $table) {...}
然后
Schema::create('users', function (Blueprint $table) {...}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.