我正在努力对类似于我的简单机票的系统进行一些更改。有一个功能可以让网站管理员使用此脚本将部门设置为部门,然后他可以将用户添加为部门人员。
有一个页面显示了任何部门的用户的票证,该页面由一个仅获取所有票证的查询组成。我想更改它,以便查询仅返回查看用户部门中的票证。我该怎么办?
一段时间以来,我一直在使用相对相同的查询功能,而我得到的最大结果是要么显示了一个部门的票,而其他部门则没有,或者根本没有显示。我以为我需要在某个地方传递参数,但是不确定是否正确。
存储票证的表的“ department_id”列中。将用户分配到部门的department_user表同时具有“ department_id”和“ user_id”。最后,部门本身的主表仅具有“ id”和“ text”(其名称)。
这是PHP的块,用于调用查询并将数据分配给变量:
$uid = OW::getUser()->getId();
$yo = SupportCenterDB::get_department_by_user($uid);
$tickets_q=SupportCenterDB::get_mod_list($yo);
$tickets=array();
foreach($tickets_q as $data) {
array_push($tickets,array(
"text"=>$data["subject"],
"updated"=>$data["updated"],
"department"=>$data["text"],
"status"=>$this->get_ticket_status($data),
"url_view"=>OW::getRouter()->urlForRoute("supportcenter-manage-tickets-view",array("id"=>$data["id"])),
"url_delete"=>OW::getRouter()->urlForRoute("supportcenter-manage-tickets-delete",array("id"=>$data["id"])),
"request_deletion"=>$data["requested_deletion"],
));
}
这是我的PHP SQL函数文件中的函数:
get_department_by_user:
static function get_department_by_user($uid){
$dp = SupportCenterDB::table_department();
$dpu = SupportCenterDB::table_department_user();
$d=OW::getDbo();
return $d->query("
SELECT {$dpu}.department_id FROM {$dpu}
WHERE user_id ='".$d->escapeString($uid)."'
LIMIT 1
;");
}
get_mod_list:
static function get_mod_list($yo){
$tt = SupportCenterDB::table_ticket();
$dp = SupportCenterDB::table_department();
$dpu = SupportCenterDB::get_department_by_user($yo);
$d = OW::getDbo();
return $d->queryForList("SELECT {$tt}.id, category_id, subject, requested_deletion, {$dp}.text, {$tt}.department_id, updated, status FROM {$tt}
JOIN {$dp} ON {$tt}.department_id = {$dp}.text
WHERE {$tt}.department_id = '{$dpu}.department_id'
ORDER BY updated DESC;");
}
最终结果应该是,当用户加载页面时,他们将仅基于分配的部门ID看到返回的故障单列表。例如;技术支持的 department_id = 1 ,而Sales的 department_id = 2 。如果“销售”中的用户加载到页面中,他们应该只能看到返回的票证列表,其中在table_ticket中,department_id =2。我的问题是从查看用户那里获取部门ID,然后然后将其应用于最终查询(获取工单)。