gpt4 book ai didi

php - 为什么我的 Moodle 查询在 "Ad hoc database queries"中有效,但在我的插件中却无效?

转载 作者:行者123 更新时间:2023-11-29 05:59:04 26 4
gpt4 key购买 nike

我有以下查询来检索自定义 Moodle 插件中的学术顾问。

学术顾问角色配置如下:https://docs.moodle.org/en/Parent_role

我已经在 Ad hoc 数据库查询(以及 MySQL Workbench)中运行了它,它在这两种情况下都运行良好,但由于某些奇怪的原因,它在我的插件中不起作用。

db_update.php :

function get_academic_advisees($userid) {
global $DB;

$sql = 'SELECT child.username, child.firstname, child.lastname
FROM {user} user
JOIN {role_assignments} ra ON ra.userid = user.id
JOIN {role} role ON role.id = ra.roleid
JOIN {context} ctx ON ctx.id = ra.contextid
AND ctx.contextlevel = 30
JOIN {user} child ON child.id = ctx.instanceid
WHERE role.shortname = "academic_adviser"
and user.username = ?';

return $DB->get_records_sql($sql, array($userid));
}

在我的attendance_form.php页,包含在 attendance.php 中(调用 db_update.php ):

require_once("{$CFG->libdir}/formslib.php");

class attendance_form extends moodleform {

function definition() {
$mform =& $this->_form;

$mform->addElement('html', '<h2>' . get_string('attendance', 'local_attendance') . '</h2>');
$mform->addElement('html', '<p>This report allows you to retrieve attendance data for your academic advisees.</p>');

//$mform->addElement('text', 'student_number', get_string('student_number', 'local_attendance'));
global $USER;
$userid = $USER->id;
$myAdvisees = array();
$adviseeArray = array();
$myAdvisees = get_academic_advisees($userid);
foreach($myAdvisees as $myAdvisee) {
$key = $myAdvisee->username;
$value = $myAdvisee->firstname . $myAdvisee->lastname . '(' . $myAdvisee->username . ')';
$adviseeArray[$key] = $value;
}

$mform->addElement('select', 'student_number', get_string('student_number', 'local_attendance'), $adviseeArray);

$this->add_action_buttons(true, get_string('save', 'local_attendance'));
}
}

最佳答案

该函数采用参数“userid”,但在查询中它会尝试将其与“user.username”相匹配。

所以,你需要输入:

$userid = $USER->username;

如果你想让它在你的表单中工作。

此外,请从 $mform =& $this->_form 中删除 & - Moodle 很久以前就停止支持 PHP 4!

关于php - 为什么我的 Moodle 查询在 "Ad hoc database queries"中有效,但在我的插件中却无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46585981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com