moodle : parent/child mentor/mentee 角色关系是如何存储的?

moodle : How is parent/child mentor/mentee role relationship stored?

moodle 如何或在哪里存储 parent/mentor 与学生的关系。我看不到系统如何绑定用户和角色分配以及它正在使用的任何其他内容(上下文等)。 我只是希望能够查询具有 supervisor/parent 角色的用户列表并获得相应的学生。

谢谢

我假设您已经按照此处定义配置了父角色:https://docs.moodle.org/en/Parent_role

如果是,连接如下:

每个用户都有一个 'context' 记录,与他们的用户 ID 相关。这可以通过 context_user::instance($userid) 或通过

从数据库中检索
SELECT * 
FROM mdl_context
WHERE instanceid = [userid] AND contextlevel = 30

(其中 30 是 CONTEXT_USER 并假设您的数据库前缀是默认值 'mdl_')

Parent/mentors 在此用户的上下文中为他们分配了适当的角色。

您可以通过以下查询在数据库中找到它:

SELECT userid
FROM mdl_role_assignments
WHERE contextid = [usercontextid]

可选地,这可以限制为仅检索特定的角色标识("AND roleid = [parentroleid]")。但是,大多数站点只会在用户上下文中分配 parent/mentor 个角色,因此您可能无需检查角色 ID 就可以逃脱。

以下查询将完美回答您的 parent child 关系。

当您在查询

中传递 child ID 时,此查询将 return parent 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 是 child id