私はカスタムMoodleプラグインの学術顧問を取得するために以下のクエリを持っています。ここで定義されているようMoodleのクエリは「Ad Hocデータベースクエリ」では動作しますが、プラグインでは動作しません。なぜですか?
学術顧問の役割が設定されている:https://docs.moodle.org/en/Parent_role
私はでそれを実行したアドホックデータベースは(とMySQL Workbenchで)を照会し、それはそれらの両方で正常に動作しますが、いくつかの奇妙なためそれは私のプラグインで動作しない理由。
db_update.php
で:(db_update.php
を呼び出す)attendance.php
に含まれている私のattendance_form.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));
}
:
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'));
}
}
はありがとうございました - それがされて 'とuser.id =している必要がありますので、私はそれ$ USER-> IDを渡しました'? –