所以我正在尝试创建一个基本的用户系统,在这个系统中我希望用户能够拥有多个角色.
比方说,我的角色如下:管理员,活动组织者,捐赠者
将这些多个角色分配给用户然后检查他们是否具有任何这些角色以显示某些权限的最佳方法是什么.
如果它只是每个人一个角色,那么这不会是一个问题因为我只是分配说管理员= 10,管理器= 5和捐赠者= 1然后做一个if语句来检查MySQL数据是否等于任何这三个数字.
我无法想象有一种方法可以添加一个MySQL字段并填写说“管理员,捐赠者”,因此该用户将拥有这两个角色?
是否只是我需要创建3个单独的字段并在这些字段中放置0或1并分别检查每个字段的情况?
解决方法:
使用多个表并加入它们:
User
--------------
id name
1 test
Role
--------------
id name
1 Donator
2 Organizer
3 Administrator
User_Role
--------------
id user_id role_id
1 1 1
2 1 3
SELECT * FROM User u
LEFT JOIN User_Role ur ON u.id = ur.user_id
LEFT JOIN Role r ON ur.role_id = r.id
WHERE r.name = "Administrator";
如果您知道自己只有3个角色且容易记住,则查询会更容易.
SELECT * FROM User u LEFT JOIN User_Role ur ON u.id = ur.user_id WHERE ur.role_id = 3;
标签:mysql
来源: https://codeday.me/bug/20190714/1455313.html