我已經開始學習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
屬性,但根據評論,這是一個壞主意。