如何在moodle中获取每个类别和子类别的用户

how to get users per category and sub categories in moodle

我想获取每个类别的用户。我正在使用 moodle 3.8 版本。有什么方法可以按类别获取用户。

如果您正在寻找 Moodle 函数来执行此操作,那么您可能会调用:

$cat = core_course_category::get($categoryid);
$courseids = $cat->get_courses(['recursive', 'idonly']);
$userids = [];
foreach ($courseids as $courseid) {
    $context = context_course::instance($courseid);
    $courseusers = get_enrolled_users($context, '', 0, 'u.id');
    $userids = array_merge($userids, array_keys($courseusers));
}

然而,这非常低效 - 您最好编写一个自定义 SQL 查询,在给定课程 ID 列表的情况下,将生成所有这些课程的注册用户列表(查看 get_enrolled_users() 的代码,了解如何构建这样的 SQL 查询)。