我已经开始学习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中创建记录。
所以我的问题是,如果这三个表互相引用,我如何添加记录?我应该把外键加到所有的桌子上吗?
我从上面的SO问题中知道,我可以指定check_foreign_keys属性,但是根据注释,这是个坏主意。
发布于 2015-02-23 16:51:18
因此,在摆弄PHPMyAdmin和laravel之后,看起来只有users_usergroups表应该有外键,而不是Users或Usergroups表。
我想这有点道理,但如果我错了,可以随意发布另一个答案。
发布于 2015-04-17 06:52:34
每个外键必须引用主表中的一个键。
您只需要这个外键关系:Usergroup:
Users_usergroups:-用户上的user_id引用global_user_id -用户组上的group_id引用id
将Users_usergroups视为用户和组之间的连接器表。
顺便说一句,我不确定您是否需要“global_user_id”,因为用户表上的“id”字段就足够了。
https://stackoverflow.com/questions/28675071
复制相似问题