Как получить конкретные данные из базы данных postgresql, когда пользователь входит в систему после того, как администратор назначит данные с помощью codeigniter? - PullRequest
1 голос
/ 15 мая 2019

Я делаю проект, в котором у меня есть 1 админ и 10-15 пользователей.

Для каждого пользователя я хочу показывать ему только те случаи, которые ему назначены для загрузки на его панель мониторинга, когда администратор назначает их. случаи, которые не были им назначены, не будут перечислены на их панели управления.

Администратор может успешно назначить case_id для таблицы

Вот таблица case_assignment, в которой есть case_id (который назначает администратор), имя пользователя (которому назначен случай), назначенная дата.

аналогично в таблице пользователей есть имя пользователя, пароль, уровень (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.

Пожалуйста, помогите мне, я новичок и изучаю язык программирования.

Ответы [ 3 ]

1 голос
/ 15 мая 2019

Исходя из вашего комментария, я предполагаю, что один сотрудник назначен одному делу. Таким образом:

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 {
    ...
}
0 голосов
/ 17 мая 2019

Thnx @ Алекс за помощь,

Вот результат, который я искал:

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();
    }
0 голосов
/ 15 мая 2019

Вы должны сначала выбрать все caes, назначенные пользователю

select * from cases where user_id=2

выборка всех дел в цикле

и выборка данных для каждого случая

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...