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

У меня есть простая программа, которая управляет данными документов. Документ имеет branch_id & subject_id,
Некоторые документы имеют:
а) только branch_id & subject_id является null,
б) только subject_id & branch_id является null,
в) оба 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), указанным выше. Может кто-нибудь мне помочь?

0

Решение

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

Давайте предположим, что вы запрашиваете все поля из tbl_documents поэтому оператор запроса «базовая линия»

SELECT * FROM tbl_documents

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

Если первое верно, то оператор запроса становится

SELECT * FROM tbl_documents WHERE tbl_documents.branch_id = some_branch_id;

Однако, если первое неверно, а второе верно, то утверждение будет

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;

Разве это не удовлетворяет критериям «с»?

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

0

Другие решения

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

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');
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector