如何在 Moodle 中 运行 自定义 SQL 查询?

How to run custom SQL queries in Moodle?

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

我想知道 Moodle 中是否有一个功能允许我 运行 任何自定义 SQL 查询,这样我就可以对 Moodle DB 做任何我需要的事情(比如使用 php query() 函数到 运行 自定义查询)。

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

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

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

但是在moodle中我不知道该怎么做,有人可以指点一下吗?

每个 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 table 整理出正确的前缀 - 通常是 mdl_trigger_message)。

但是,对于您给出的示例,您可能希望这样写:

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