Codeigniter где_in ИЛИ где_in

Я использую codeigniter для запроса к базе данных, и мне нужно условно сравнить массивы в предложении where.

В общем, я хочу сделать: where_in ИЛИ where_in в зависимости от того, какой массив содержит данные. Поэтому у меня будет либо массив user_id, либо массив area_id.

Я не уверен, как объединить сравнение where_in. Это запрос, который мне нужно исправить:

public function get_checks_test($org_id,$users,$areas) {
// get todays date
$todays_date = date("Y-m-d");
// build where array
$check_array = array('c.org_id =' => $org_id, 'c.status !=' => '0', 'c.due <=' => $todays_date);
// build query
$this->db->select('c.*,a.check_area_id,b.check_user_id,d.area_name,u.first_name,u.last_name');
$this->db->order_by('c.due', 'asc');
$this->db->where($check_array);
$this->db->where_in('user_id', $users);
$this->db->or_where_in('area_id', $areas);
$this->db->join('check_assigned_areas a','a.check_id = c.check_id','left');
$this->db->join('check_assigned_users b','b.check_id = c.check_id','left');
$this->db->join('areas d','d.area_id = a.check_area_id','left');
$this->db->join('users u','u.id = b.check_user_id','left');
$check_object = $this->db->get('checks c');
return $check_object->result();
}

Я не думаю, что есть функция or_where_in, которую я могу найти.

Могу ли я сделать это так или мне нужно переосмыслить?

Спасибо

0

Решение

Да, есть or_where_in функция в Codeigniter. Если понадобится дополнительная помощь, я с радостью помогу.

Thanx,
Удачного кодирования.

6

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

Я не уверен, что это то, что вы хотите:

if(!empty($users)){
$this->db->where_in('user_id', $users);
}
elseif(!empty($areas)){
$this->db->where_in('area_id', $areas);
}
1

Когда вы используете «левое» соединение, то в любом случае никогда не используйте «где условие» как or_where_in а также where_in потому что он сделает array () для этого левого запроса, если он не найден.

$this->db->join('users u', 'u.id = b.check_user_id and u.id=' . $users, 'left');
0
По вопросам рекламы [email protected]