Роль «Сотрудник банка» не назначена сотруднику УИЛЬЯМУ ДЕ ДИОСУ, как показано на скриншоте, доступном из Moodle.
Но созданный мной сценарий показывает, что у этого сотрудника уже есть роль «Банковский служащий».
Вот сценарий:
select distinct u.username USER_NAME, u.firstname FIRST_NAME, u.lastname LAST_NAME, u. auth,
u.suspended, u. idnumber, u.email, u.maildisplay, r.name ROLE_NAME
from mdl_user u
left join mdl_role_assignments ra ON ra.userid=u.id
left join mdl_role r ON ra.roleid = r.id
where u.lastname like '%DE DIOS%' and u.firstname like '%WILLIAM%'
order by lastname;
Помогите, пожалуйста. Мне нужно доработать скрипт, чтобы отображалась только назначенная роль. Роль «Сотрудник банка» не должна отображаться в модуле Moodle.
Возможно ли, что роль сотрудника банка каким-то образом была назначена пользователю в контексте, отличном от системного, например другие контексты, такие как курс, блок, пользователь и т. д.? Это может привести к записи в таблице role_assignments для роли Bank Employee, но в контексте, который не является системным. Эта запись не появится на экране, которым вы поделились b / c, который показывает только пользователей с ролью для системного контекста. Я видел, как это происходило в прошлом с непреднамеренными / старыми назначениями ролей, которые не удалялись из БД. Запрос role_assignments с использованием идентификатора роли и идентификатора пользователя может выявить эту ситуацию. Надеюсь, что это поможет.