我有一个包含各种用户角色的角色表。
数据透视表将此连接到我的用户表。
users
id | name
roles
id | title
user_role
user_id | role_id
我想显示所有存在的角色,并预先勾选属于特定用户的角色。
我怎么会这样做,我认为我不能在mySQL中做到这一点?
我正在考虑使用一个查询获取所有角色,然后使用另一个查询获取属于特定用户的所有角色。
然后遍历所有角色,如果与特定用户角色匹配,则输出一个复选框而不是未选中的框。
有更好的方法吗?
答案 0 :(得分:1)
像
这样的东西SELECT R.id as role_id,
R.title as role_title,
UR.user_id as user_id,
U.name as user_name
FROM Roles R
LEFT JOIN user_role UR
ON UR.role_id = R.id
AND UR.user_id = :myuserid
LEFT JOIN users U
ON U.id = UR.user_id
应该返回一个完整的角色列表,在user
列中包含NULL或用户ID,以指示用户已被授予的任何角色(用户通过id标识为:myuserid)
答案 1 :(得分:-1)
我认为普通的SQL查询可以完成大部分工作:查看此SQLFIddle以查询查询的样本
SELECT r.* FROM roles r LEFT JOIN user_role ur ON r.id=ur.role_id WHERE ur.user_id=3;