我已将用户分配到特定部门。当他们查看同一页面(/管理)时,我希望他们根据查看用户的部门获得不同的票证以显示。
为此,我设置了一个变量以获取查看用户的ID(与数据库相对应),然后设置另一个变量以将该值传递给我创建的名为get_department_by_user的新SQL函数的参数:
static function get_department_by_user($userid){
$dp = SupportCenterDB::table_department();
$dpu = SupportCenterDB::table_department_user();
$d=OW::getDbo();
return $d->query("
SELECT {$dpu}.department_id FROM {$dpu}
JOIN {$dp} ON {$dpu}.department_id = {$dp}.id
WHERE user_id ='".$d->escapeString($userid)."'
;");
}
这是脚本中的变量:
$id = SupportCenterDB::get_department_by_user(OW::getUser()->getId());
...
$ticket_q = SupportCenterDB::ticket_list_manage($id);
当我检查数据库查询以加载页面时,第一个SQL函数将正常工作。它正在根据用户的ID来获取要使用的部门类型(将用户分配给部门时,他们通过其ID分配给特定的department_id)。
我遇到麻烦的步骤是下一个SQL函数。我想从票证表中获取数据,其中票证的department_id =早期SQL函数设置的部门ID。
static function ticket_list_manage(){
$table_ticket = SupportCenterDB::table_ticket();
$d=OW::getDbo();
$dp = SupportCenterDB::table_department();
return $d->queryForList("SELECT {$table_ticket}.id, category_id, subject,
requested_deletion, {$dp}.text, department_id, updated, status FROM {$table_ticket}
JOIN {$dp} ON {$dp}.id = {$table_ticket}.department_id
WHERE {$table_ticket}.department_id='{$id}'
ORDER BY updated DESC;");
}
现在,这什么也不返回。当我对其进行更改并添加参数时,它只是从部门1(标识1)返回票证,但用户应该只能看到部门2(标识2)。我尝试过更改它,但是没有结果。当我检查SQL进程时,ticket_list_manage函数显示{$table_ticket}.department_id = ''
意味着(至少我认为)没有参数,需要传递一个参数。
我的问题:如何从第一个函数(get_department_by_user
)中获取结果并将其作为table_list_manage()
的参数传递?
编辑:从有问题的第二个函数中删除了$ userid,它除了get_department_by_user函数外没有任何作用
例如,当我在ticket_list_manage()查询中更改department_id ='2'时,将获得该部门的故障单。当我是适当的用户时,运行针对get_department_by_user的查询时,我也会得到department_id ='2'。我只需要知道如何将该结果传递给其他查询即可。