У меня есть простая программа, которая управляет данными документов. Документ имеет 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), указанным выше. Может кто-нибудь мне помочь?
Я не верю, что тебе нужно что-то делать.
Давайте предположим, что вы запрашиваете все поля из 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) запрос, который вы на самом деле хотите запустить?
Попробуйте метод ассоциативного массива
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');