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

标签 sql moodle

我发现当查询变得复杂时,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中我不知道该怎么做,有人可以建议吗?

最佳答案

每个 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)');

关于sql - 如何在 Moodle 中运行自定义 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51213830/

相关文章:

sql - 如果主键不是 NULL,那么引用它的外键是否也应该指定为 NOT NULL?

java - 如何从 Java 列表创建 SQL 数组?

php - Moodle 复杂 SQL 不工作

Electron 窗口商店返回错误 : unknown option `--flatten'

mysql - 更改 MySQL innodb_file_format 和 large_prefix 是否会对其他网站造成任何问题?

c# - 区分大型数据列表的最佳方式、算法和方法是什么?

sql - 加入多个条件

mysql - 使用 LIMIT 更新 SQL 中的第一行

mysql - 扩展以根据数据范围选择

authentication - 如何检查用户是否登录moodle?