我已经开始学习Laravel,并创造了3个迁移文件:Laravel MySQL的外键约束失败
- 用户
- 群组
- Users_usergroups
用户包含用户信息,用户组包含用户组信息,而users_usergroups是一个数据透视表,用于存储哪些用户位于哪个用户组中。
这是我的架构的一个基本的例子:
Users:
- id
- global_user_id
- username
Usergroups:
- id
- group_name
- Users_usergroups:
- id
- user_id
- group_id
及后阅读这篇文章:http://daylerees.com/codebright/eloquent-relationships,我有以下外键:
Users:
- global_user_id references user_id on users_usergroups
Usergroups:
- id references group_id on users_usergroups
Users_usergroups:
- user_id references global_user_id on Users
- group_id references id on Usergroups
每当我尝试添加一条记录到用户或用户组出现错误:
#1452 - Cannot add or update a child row: a foreign key constraint fails
读取后Mysql error 1452 - Cannot add or update a child row: a foreign key constraint fails据我所知,我无法添加用户,因为users_usergroups
中不存在相应的记录,并且由于相同的原因,我无法添加用户组,因此如果用户无法在users_usergroups
中创建记录或用户组尚未创建。
所以我的问题是,如果这3个表互相引用,我如何添加记录?我应该为所有表添加外键?
我从上面的SO问题知道我可以指定check_foreign_keys
属性,但根据评论,这是一个坏主意。