我发现当查询变得复杂时,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);
但是在穆德勒,我不知道该怎么做,有人可以建议吗?
答案 0 :(得分:1)
每个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)');