查询指定Moodle课程内指定用户角色ID的SQL需求
Moodle 获取指定用户指定课程的数值角色ID
表关联逻辑
Moodle的用户课程角色分配需要关联两张核心表:
mdl_context:课程级上下文的contextlevel固定为50,instanceid字段存储对应的课程IDmdl_role_assignments:存储用户角色分配数据,roleid即所需的数值型角色标识,字段关联userid与上下文ID
直接可用的SQL(匹配User ID=2、Course ID=50的需求)
SELECT ra.roleid AS numeric_course_role_id FROM mdl_role_assignments ra INNER JOIN mdl_context ctx ON ra.contextid = ctx.id WHERE ctx.contextlevel = 50 AND ctx.instanceid = 50 AND ra.userid = 2;
注意事项
- Moodle默认数据库表前缀为
mdl_,若站点修改过前缀,请将语句中的前缀替换为实际值 - 该语句仅查询用户在当前课程层级直接分配的角色,若角色由分类、全站等更高层级上下文继承而来,不会被命中
- 若需要获取角色的文本名称,可额外关联
mdl_role表的shortname/name字段
内容的提问来源于stack exchange,提问作者Learner
相关产品推荐
相关产品推荐

