如何扩展Moodle活动完成SQL报告以包含Scorm活动名称
解决方案:在SCORM用户完成报告中添加活动标题
在Moodle数据库结构里,你需要通过**中间表mdl_course_modules**建立mdl_course_modules_completion(即原代码中的cmc)与mdl_scorm的关联,具体逻辑如下:
cmc.coursemoduleid关联mdl_course_modules.id(对应课程内的某个模块记录)mdl_course_modules.instance关联mdl_scorm.id(该模块对应的SCORM活动实例ID)- 额外通过
mdl_modules过滤,确保只关联SCORM类型的模块,避免错误关联
基于原代码扩展后的完整SQL示例:
SELECT u.id AS user_id, u.username AS user_name, s.name AS scorm_activity_title, -- 新增SCORM活动标题字段 cmc.completionstate, cmc.timemodified AS completion_time FROM mdl_user u JOIN mdl_course_modules_completion cmc ON u.id = cmc.userid -- 关联课程模块表,建立与SCORM的桥梁 JOIN mdl_course_modules cm ON cmc.coursemoduleid = cm.id -- 关联SCORM表获取活动标题 JOIN mdl_scorm s ON cm.instance = s.id -- 过滤仅SCORM类型的课程模块 JOIN mdl_modules m ON cm.module = m.id AND m.name = 'scorm' -- 可根据需求添加课程过滤条件 WHERE cm.course = 123 -- 替换为你的课程ID ORDER BY u.username, s.name;
说明:
- 新增的
s.name就是你需要的SCORM活动标题 - 加入
mdl_modules的关联是为了确保只处理SCORM模块,避免其他类型模块(如作业、测验)的干扰 - 可根据原代码的需求,保留或调整原有字段、过滤条件及排序规则
内容的提问来源于stack exchange,提问作者Mhand
相关产品推荐
相关产品推荐

