Logging 努力对Moodle数据库表进行正确的查询;mdl“日志存储”标准“日志”;以便从GUI导出日志

Logging 努力对Moodle数据库表进行正确的查询;mdl“日志存储”标准“日志”;以便从GUI导出日志,logging,moodle,moodle-api,Logging,Moodle,Moodle Api,我的问题是,我试图从Moodle DB“mdl_logstore_standard_log”中导出一个csv文件,其顺序与Site Administration>Reports下的Logs页面的顺序相同 实现这一目标的一个方法是通过如下查询: SELECT FROM_UNIXTIME(l.timecreated,'%d %b, %H:%i') AS `Time`, CONCAT(u.firstname, ' ', u.lastname) AS `User full name`, CONCAT

我的问题是,我试图从Moodle DB“mdl_logstore_standard_log”中导出一个csv文件,其顺序与Site Administration>Reports下的Logs页面的顺序相同

实现这一目标的一个方法是通过如下查询:

SELECT 
FROM_UNIXTIME(l.timecreated,'%d %b, %H:%i') AS `Time`,
CONCAT(u.firstname, ' ', u.lastname) AS `User full name`,
CONCAT(au.firstname, ' ', au.lastname) AS `Affected user`,
l.origin AS `Origin`,
l.ip AS `IP address`
FROM mdl_logstore_standard_log AS l
LEFT JOIN mdl_user AS u ON u.id = l.userid
LEFT JOIN mdl_user AS au ON au.id = l.relateduserid

不幸的是,上面的查询并不像我预期的那样。我需要moodle的GUI报告中的准确数据。你知道这个查询是否已经在moodle中的php文件中实现了,或者之前有人尝试过吗

web表单不依赖于单个查询,而是依赖于一系列查询和PHP代码来创建日志报告。如果您感兴趣,我在这里记录了两个这样的系列:和

日志中的大多数查询专用于查看权限等。主要部分可以在末尾找到,大致从这里开始:

SELECT COUNT('x') FROM mdl_course
SELECT id,shortname,fullname,category FROM mdl_course   ORDER BY fullname
SELECT u.id, u.firstnamephonetic,u.lastnamephonetic,u.middlename,u.alternatename,u.firstname,u.lastname
              FROM mdl_user u
              JOIN (SELECT DISTINCT eu1_u.id
              FROM mdl_user eu1_u                
             WHERE 1 = 1 AND eu1_u.deleted = 0) je ON je.id = u.id
             WHERE u.deleted = 0 ORDER BY u.lastname, u.firstname, u.id LIMIT 0, 1001
SELECT COUNT('x') FROM mdl_logstore_standard_log WHERE anonymous = 0
SELECT * FROM mdl_logstore_standard_log WHERE anonymous = 0 ORDER BY timecreated DESC, id DESC LIMIT 0, 100
SELECT id,firstnamephonetic,lastnamephonetic,middlename,alternatename,firstname,lastname FROM mdl_user WHERE id = '2'
SELECT * FROM mdl_logstore_standard_log WHERE anonymous = 0 ORDER BY timecreated DESC, id DESC LIMIT 0, 100
SELECT * FROM mdl_user WHERE id = '2' AND deleted = '0'
就这样。 所以基本上,你是正确的。但是,您需要漂亮地打印其余的列,即
contextid
component
eventname
other
,您自己:

SELECT FROM_UNIXTIME(l.timecreated, '%d %b, %H:%i') AS `Time`
    ,CONCAT (u.firstname, ' ', u.lastname) AS `User FULL name`
    ,CONCAT (au.firstname, ,' ', au.lastname) AS `Affected user`
    ,l.contextid AS EventContext
    ,l.component
    ,l.eventname
    ,other AS description
    ,l.origin AS `Origin`
    ,l.ip AS `IP address`
FROM mdl_logstore_standard_log AS l
LEFT JOIN mdl_user AS u ON u.id = l.userid
LEFT JOIN mdl_user AS au ON au.id = l.relateduserid
WHERE l.anonymous = 0
ORDER BY l.timecreated DESC
    ,l.id DESC

如果这与自动化有关,而不仅仅与报告有关,我会避免进行繁琐的翻译,只处理此处所选的原始数据。

查询报告有什么问题?问题是我无法进行适当的查询以获取与图片所示相同的列“Moodle report fields order”这就是我真正想要的!!!!感谢wp78de。我想谢谢你。