簡體   English   中英

管理員使用codeigniter分配數據后,用戶登錄后如何從postgresql數據庫中獲取特定數據?

[英]How to get the specific data from postgresql database when an user logs in after admin assigning the data using codeigniter?

我正在制作有1個管理員和10-15個用戶的項目。

對於每個用戶,我只想向他們顯示專門分配給他們的案例,以便在管理員分配他們時在他們的儀表板上加載。 未分配給他們的案例不會在其儀表板上列出。

管理員可以成功將case_id分配給表

這是case_assignment表,其中具有case_id(由管理員分配),username(向其分配案例的用戶名),分配日期。

同樣,用戶表中有用戶名,密碼,級別(admin為1,所有其他用戶為2),電子郵件

如果管理員已將案例(將出現case_id)分配給case_assignment表中的特定用戶名,那么,當用戶登錄時,他應該能夠查看與該特定case_id相關的所有數據(表)。 這是屏幕截圖:

管理員頁面: https : //prnt.sc/novscc- >這將顯示如何為管理員顯示數據表。他將擁有所有案例數據。 當他將案例分配給用戶時。 用戶應該只收到這種情況。

用戶頁面: https : //prnt.sc/novtnr- >這是我希望在管理員分配案例時顯示用戶數據表的方式。

這是數據庫case_assigment表的屏幕截圖: https ://prnt.sc/novtze(這里只有管理員想要分配給的case_id和用戶名)。

這是user.php視圖

<table id="table" class="table table-striped table-bordered display nowrap" cellspacing="0" width="100%" "style="width: 650px;">
            <thead>
                <tr>
                    <th>Case ID</th>
                    <th>Case Name</th>
                    <th>Firm Name</th>
                    <th>Case Overview</th>
                    <th>Priority</th>
                    <th>Received Date</th>
                    <th>Expected Delivery Date</th>
                    <th>Service Status</th>
                </tr>
            </thead>
        <tbody>
                <?php

                        if($result){
                           foreach ($result as $results) {                                
                ?>
                <tr>
                    <td><?php echo $results->case_id; ?></td>
                    <td><?php echo $results->case_name; ?></td>
                    <td><?php echo $results->firm_name; ?></td>
                    <td><?php echo $results->case_description; ?></td>
                    <td><?php echo $results->priority; ?></td>
                    <td><?php echo $results->received_date; ?></td>
                    <td><?php echo $results->expected_delivery_date; ?></td>
                    <td><?php echo $results->service_status; ?></td>
                </tr> 
    <?php
            }
        }
    ?>
            </tbody>
        </table>

這是我的控制器(employee.php)

    public function index()
  {   
      $this->load->helper('url');
      $this->session->userdata('username');
      $data['result'] = $this->HomeModel->get_employee($case_id);
      $this->load->view('case/user',$data);
      //print_r($data);
      //die;
  }

這是我的模型(HomeModel.php)

public function get_employee($case_id)
    {
        $this->session->userdata('username');
        $this->db->select('case_main.case_id,
                       case_main.case_name,
                       case_main.firm_name,
                       case_overview.case_description,
                       case_priority.priority,
                       service_delivery_dates.received_date, 
                       service_delivery_dates.expected_delivery_date,  
                       service_delivery_dates.service_status');
      $this->db->from('case_tracker.case_assignment');
      $this->db->join('case_tracker.case_main', 'case_tracker.case_assignment.case_id=case_tracker.case_main.case_id');
      $this->db->join('case_tracker.case_overview', 'case_tracker.case_main.case_id = case_tracker.case_overview.case_id','left');
      $this->db->join('case_tracker.case_priority', 'case_tracker.case_overview.case_id = case_tracker.case_priority.case_id' , 'left');
      $this->db->join('case_tracker.service_delivery_dates', 'case_tracker.case_priority.case_id = case_tracker.service_delivery_dates.case_id' , 'left');
      $this->db->where('case_assignment_case_id', $case_id);
      $data = $this->db->get();    
      return $data->result();
  }

注意:-這里的case_main,case_overview,case_priority,service_delivery_dates是數據庫中的不同表,而case_tracker是我的架構名稱。

我不知道在控制器中寫什么來獲取管理員分配的case_id,並且當用戶登錄時,他/她應該能夠查看特定case_id的所有數據

預期結果:-管理員頁面: https//prnt.sc/novscc- >這將顯示如何為管理員顯示數據表。他將擁有所有案例數據。 當他將案例分配給用戶時。 用戶應該只收到這種情況。

用戶頁面: https : //prnt.sc/novtnr- >這是我希望在管理員分配案例時顯示用戶數據表的方式。

這是數據庫case_assigment表的屏幕截圖: https ://prnt.sc/novtze(這里只有管理員想要分配給的case_id和用戶名)。

對於每個用戶,我只想向他們顯示專門分配給他們的案例,以便在管理員分配他們時在他們的儀表板上加載。 未分配給他們的案例不會在其儀表板上列出。

如果管理員已將案例(將出現case_id)分配給特定的用戶名,那么,當用戶登錄時,他應該能夠看到與該特定case_id相關的所有數據(表)。

請幫助我,我是新手,正在學習編程語言。

根據您的評論,我假設一名雇員被分配給一個案件。 從而:

function get_employee_case() {
    $this->db->select('case_id');
    $this->db->where('username', $this->session->userdata('username'));
    $q = $this->db->get('case_assignment');
    if ($q->num_rows() == 1) {
        return $q->row()->case_id;
    }
    return null;
}

控制器:

$case_id = $this->HomeModel->get_employee_case();
if (!is_null($case_id)) {
    $data['result'] = $this->HomeModel->get_employee($case_id);
} else {
    $data['result'] = null;
}

視圖:

if (is_null($result)) {
    echo 'no case assigned';
} else {
    ...
}

Thnx @Alex的幫助,

這是我一直在尋找的結果:

Controller:

     public function index()
    { 
       $data['result'] = $this->HomeModel->get_employee_case();
       $this->load->view('case/user');
    /*
       print_r($data);
       die; */
    }

Model:

    function get_employee_case()
      {
        $this->db->select('case_assignment.case_id,
                           case_main.case_name,
                           case_main.firm_name,
                           case_overview.case_description,
                           case_priority.priority,
                           service_delivery_dates.received_date, 
                           service_delivery_dates.expected_delivery_date,  
                           service_delivery_dates.service_status');
        $this->db->from('case_tracker.case_assignment');
        $this->db->join('case_tracker.case_main', 'case_tracker.case_assignment.case_id=case_tracker.case_main.case_id', 'left');
        $this->db->join('case_tracker.case_overview', 'case_tracker.case_main.case_id=case_tracker.case_overview.case_id', 'left');
        $this->db->join('case_tracker.type_of_services', 'case_tracker.case_overview.case_id = case_tracker.type_of_services.case_id', 'left');
        $this->db->join('case_tracker.specific_instructions', 'case_tracker.type_of_services.case_id = case_tracker.specific_instructions.case_id' , 'left');
        $this->db->join('case_tracker.case_priority', 'case_tracker.specific_instructions.case_id = case_tracker.case_priority.case_id' , 'left');
        $this->db->join('case_tracker.service_delivery_dates', 'case_tracker.case_priority.case_id = case_tracker.service_delivery_dates.case_id' , 'left');
        $this->db->where('case_assignment.username', $this->session->userdata('username'));
        $query = $this->db->get();
        return $query->result();
    }

您必須首先選擇分配給用戶的所有caes

select * from cases where user_id=2

循環獲取所有案例

然后為每種情況獲取數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM