首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel MySQL外键约束失败

Laravel MySQL外键约束失败
EN

Stack Overflow用户
提问于 2015-02-23 13:38:34
回答 2查看 348关注 0票数 0

我已经开始学习Laravel,并创建了3个迁移文件:

  • 用户
  • 用户组
  • Users_usergroups

用户包含用户信息,用户组包含用户组信息,users_usergroups是存储哪些用户在哪个用户组中的枢轴表。

这是我的模式的一个基本示例:

代码语言:javascript
复制
 Users:
 - id
 - global_user_id
 - username

 Usergroups:
 - id
 - group_name 

 - Users_usergroups:
 - id
 - user_id
 - group_id

在阅读了本文:http://daylerees.com/codebright/eloquent-relationships之后,我有以下外键:

代码语言:javascript
复制
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

每当我试图向用户或用户组添加记录时,都会得到以下错误:

代码语言:javascript
复制
#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属性,但是根据注释,这是个坏主意。

EN

回答 2

Stack Overflow用户

发布于 2015-02-23 16:51:18

因此,在摆弄PHPMyAdmin和laravel之后,看起来只有users_usergroups表应该有外键,而不是UsersUsergroups表。

我想这有点道理,但如果我错了,可以随意发布另一个答案。

票数 0
EN

Stack Overflow用户

发布于 2015-04-17 06:52:34

每个外键必须引用主表中的一个键。

您只需要这个外键关系:Usergroup:

Users_usergroups:-用户上的user_id引用global_user_id -用户组上的group_id引用id

将Users_usergroups视为用户和组之间的连接器表。

顺便说一句,我不确定您是否需要“global_user_id”,因为用户表上的“id”字段就足够了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28675071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档