【发布时间】:2016-09-15 11:16:59
【问题描述】:
moodle 如何或在哪里存储家长/导师与学生的关系。我看不到系统如何绑定用户和角色分配以及它正在使用的任何其他内容(上下文等)。 我只是希望能够查询具有主管/家长角色的用户列表并获得相应的学生。
谢谢
【问题讨论】:
标签: moodle
moodle 如何或在哪里存储家长/导师与学生的关系。我看不到系统如何绑定用户和角色分配以及它正在使用的任何其他内容(上下文等)。 我只是希望能够查询具有主管/家长角色的用户列表并获得相应的学生。
谢谢
【问题讨论】:
标签: moodle
我假设您已经按照此处定义的方式配置了父角色:https://docs.moodle.org/en/Parent_role
如果是,则连接如下:
每个用户都有一个与其用户 ID 相关的“上下文”记录。这可以通过 context_user::instance($userid) 或从数据库中检索到
SELECT *
FROM mdl_context
WHERE instanceid = [userid] AND contextlevel = 30
(其中 30 是 CONTEXT_USER 并假设您的数据库前缀是默认的 'mdl_')
家长/导师在该用户的上下文中分配了适当的角色。
您可以通过以下查询在数据库中找到它:
SELECT userid
FROM mdl_role_assignments
WHERE contextid = [usercontextid]
或者,这可以限制为仅检索特定的角色标识(使用“AND roleid = [parentroleid]”)。但是,大多数网站只会在用户上下文中分配父/导师角色,因此您可能无需检查角色 ID 就可以逃脱。
【讨论】:
下面的查询将完美回答你的父子关系。
当您在查询中传递子 id 时,此查询将返回父 id
SELECT userid as parent FROM mdl_role_assignments
join mdl_context on mdl_context.id = mdl_role_assignments.contextid
where mdl_context.contextlevel = 30 and mdl_context.instanceid = 162
这里 162 是孩子的 id
【讨论】: