我开始学习Laravel,并创建了3个迁移文件:
用户包含用户信息,用户组包含用户组信息,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个表互相引用,我该如何添加记录?我应该为所有表添加外键吗?
我从上面的问题中得知,我可以指定check_foreign_keys
属性,但根据评论,这是一个坏主意。
答案 0 :(得分:0)
所以在摆弄PHPMyAdmin和laravel之后,看起来只有users_usergroups
表应该有外键,而不是Users
或Usergroups
表。
我觉得这有点道理,但如果我错了,请随意发表另一个答案。
答案 1 :(得分:0)
每个外键必须引用主表中的键。
您只需要此外键关系: 群组:
Users_usergroups: - user_id引用用户的global_user_id - group_id引用Usergroups上的id
将Users_usergroups视为用户和组之间的连接器表。
顺便说一下,我不确定您是否需要' global_user_id'作为' id'用户表上的字段应该足够了。