php - 我想检索类(class)模块的实例

标签 php mysql moodle moodle-api

tl;博士;尝试通过 mysql 或官方 moodle api 通过类(class)模块获取类(class)模块实例。不过,我的解决方案最终看起来相当草率,所以我需要一些建议。

大家好 Moodle

我正在尝试为 mdl_course_modules 中的每一行检索相应的类(class)模块实例,此上下文中的实例将是来自 mdl_quiz、mdl_wiki 或其他一些 course_modules 实例的单行。

我已经尝试了一些东西,我希望能起作用的是:

function get_all_course_modules($course_id) {
   global $DB;
   $course = $DB->get_record('course', array('id' => $course_id));
   $mod_info = get_fast_modinfo($course);
}

我无法从 $mod_info 获取类(class)模块实例。

所以我尝试做一些自定义的 mysql,

SELECT course.id, course.fullname, cm.course, cm.section, m.name 
 FROM mdl_course AS course 
 JOIN mdl_course_modules AS cm ON cm.course = course.id
 JOIN mdl_modules AS m ON m.id = cm.module 
 JOIN CONCAT('mdl_', m.name) AS module_type ON ...somethingsomething
 WHERE course.id = 2;

sql 还没有完全完成,我偶然发现我事先不知道所有不同的类(class)模块,这意味着我必须动态地使用 course_module 的名称来选择我想加入的实例表在所有可能的类(class)模块实例表上,或者只是 LEFT JOIN,但是如果有人放入新的类(class)模块实例,这将永远花费并且将停止工作。

现在我正在做以下事情:

 $result = array();
$course_mods = get_course_mods($course_id);

if($course_mods) {
    foreach($course_mods as $course_mod) {
        $DB->get_records_sql('some sql that selects the instance');
    }
}

return $result;

这最后一段代码最终会起作用,我将能够从 $course_mod 变量动态创建查询,例如 $course_mod->instance、$course_mod->mod_name 等。

但我认为这似乎很难。你们中有人成功地以更简单的方式获得了 course_module 实例吗?

谢谢!!

最佳答案

这是我最终使用的函数,用于检索类(class)模块实例,它不是很漂亮,但无论如何。

function get_all_course_modules($course_id) {
global $DB;
$course_mods = get_course_mods($course_id);
$result = array();
if($course_mods) {
    foreach($course_mods as $course_mod) {
        $course_mod->course_module_instance = $DB->get_record($course_mod->modname, array('id' =>$course_mod->instance ));
        $result[$course_mod->id] = $course_mod;
    }
}
return $result;
}

关于php - 我想检索类(class)模块的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38899458/

相关文章:

php Mysql 联合表中准备好的查询出现问题

java - 外部应用程序使用 Java Web 服务进行 Moodle 身份验证

javascript - 从外部网站验证 Moodle 用户

php - 如何在新标签页上打开谷歌广告?

php - 两个不相关的表,具有匹配和反对功能

PHP:utf8_encode 不起作用,空的 json_encode?

java - 我的应用程序可以与 Moodle 通信吗?

php - 撇号问题

php - 如何让我的 Logo 链接回到 wordpress 22 子主题中的主页?

mysql - MySQL 5.4 有多稳定