首页 > 解决方案 > 如何在 Moodle 中运行自定义 SQL 查询?

问题描述

当查询变得复杂时,我发现 Moodle 中的预定义查询函数不是很方便。大多数预定义函数可以在这里找到:https ://docs.moodle.org/dev/Data_manipulation_API

我想知道 Moodle 中是否有一个函数允许我运行任何自定义 SQL 查询,以便我可以对 Moodle DB 执行任何我需要的操作(例如,使用 php query() 函数运行自定义查询)。

一个例子是,我试图从表'trigger_message'中获取最后一行,我知道在 php 中我可以做到

$sql=("
      SELECT Trigger_id 
      FROM trigger_message 
      ORDER BY trigger_Id 
      DESC limit 1
     ");

$id = $DB->query($sql);

但是在moodle中我不知道该怎么做,有人可以建议吗?

标签: sqlmoodle

解决方案


每个 Moodle DB 函数都有一个接受 SQL + 参数的 _sql 变体 - 请参阅此处的文档:https ://docs.moodle.org/dev/Data_manipulation_API

因此,从您的示例中,您可能需要以下内容:

$id = $DB->get_field_sql("SELECT MAX(trigger_id) FROM {trigger_message}");

(这将整理出 trigger_message 表的正确前缀 - 通常是 mdl_trigger_message)。

但是,对于您给出的示例,您可能想要编写:

$id = $DB->get_field('trigger_message', 'MAX(trigger_id)');

推荐阅读