根据两个不同的查询返回特定的数据集

时间:2019-06-13 16:47:22

标签: php mysql

我正在努力对类似于我的简单机票的系统进行一些更改。有一个功能可以让网站管理员使用此脚本将部门设置为部门,然后他可以将用户添加为部门人员。

有一个页面显示了任何部门的用户的票证,该页面由一个仅获取所有票证的查询组成。我想更改它,以便查询仅返回查看用户部门中的票证。我该怎么办?

一段时间以来,我一直在使用相对相同的查询功能,而我得到的最大结果是要么显示了一个部门的票,而其他部门则没有,或者根本没有显示。我以为我需要在某个地方传递参数,但是不确定是否正确。

存储票证的表的“ 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,然后然后将其应用于最终查询(获取工单)。

0 个答案:

没有答案