Данные сеанса в Codeigniter - PullRequest
       1

Данные сеанса в Codeigniter

0 голосов
/ 17 декабря 2018

У меня есть простая программа, которая управляет данными документов.Документ имеет branch_id & subject_id.Некоторые документы имеют:а) Только branch_id & subject_id - это null.б) Только subject_id & branch_id - это null.c) Обе branch_id & subject_id.

Мне нужно разделить все файлы по вышеуказанным критериям.В моем проекте я использовал следующий код для этого

if ($this->session->userdata('branch_id'))
      $this->db->where('tbl_documents.branch_id', $this->session->userdata('branch_id'));
if ($this->session->userdata('subject_id'))
      $this->db->where('tbl_documents.subject_id', $this->session->userdata('subject_id'));

Как я могу изменить приведенный выше код для соответствия критериям c), указанным выше.Может кто-нибудь мне помочь?

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Я не думаю, что вам нужно что-то делать.

Предположим, вы запрашиваете все поля из tbl_documents, поэтому оператор запроса "base-line" -

SELECT * FROM tbl_documents

Это не изменится, если одно или оба из if утверждений верны.

Если первый равен true, тогда оператор запроса становится

SELECT * FROM tbl_documents WHERE tbl_documents.branch_id = some_branch_id;

Однако, если первый равен false, а второй true, тогда оператор будет

SELECT * FROM tbl_documents WHERE tbl_documents.subject_id = some_subject_id;

Если оба условия if выполняются, оператор запроса будет

SELECT * FROM tbl_documents WHERE tbl_documents.branch_id = some_branch_id 
                             AND tbl_documents.subject_id = some_subject_id;

Разве это не удовлетворяет критерию "c"?

Вопрос, который у меня возникает, - что если оба условияложны?SELECT * FROM tbl_documents (без условий WHERE) запрос, который вы действительно хотите выполнить?

0 голосов
/ 17 декабря 2018

Попробуйте метод ассоциативного массива

if (($this->session->userdata('branch_id')) && ($this->session->userdata('subject_id')))
{
  $where = array(
                'branch_id' => $this->session->userdata('branch_id'), 
                'subject_id' => $this->session->userdata('subject_id')
                );
 }
else if($this->session->userdata('branch_id'))
{
  $where = array('branch_id' => $this->session->userdata('branch_id'));
}
else if($this->session->userdata('subject_id'))
{
  $where = array('subject_id' => $this->session->userdata('subject_id'));
}
else
{
  $where = array('1' => '1'); //You probably don't need this case.
}

$this->db->where($where);
$this->db->get('tbl_documents');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...