2012-01-05 3 views
8

Можно ли группировать группы and_where/or_where/or_like ..., чтобы не смешивать с другими и/или операторами.Codeigniter Active Record 'where_or' grouping

Что-то, что привело бы к

ГДЕ город = 'Мой Город' И состояние = 'Мое состояние' И (имя LIKE% name1% или имя LIKE% Имя2%)

ответ

11

Да. $this->db->where() позволяет писать статьи вручную. Вы можете сделать это:

$this->db->where('city', 'My City'); 
$this->db->where('state', 'My State'); 
$this->db->where('(name LIKE %name1% OR name LIKE %name2%)', null, false); 

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

Проверьте Active Record documentation. Раздел под названием $ this-> db-> где(); объясняет четыре метода, которые вы можете использовать для установки WHERE.

+0

Awesome, отсутствовал третий из параметров, когда я попытался это – kilrizzy

13

Я знаю, что это немного поздно, но я нашел это сообщение, изучая его и нашел лучшее решение, чем предложение Шона.

$name = 'Bob'; 

$this->db->where('city', 'My City'); 
$this->db->where('state', 'My State'); 
$this->db->group_start(); 
    $this->db->like('name', $name); 
    $this->db->or_like('name', $name); 
$this->db->group_end(); 
+3

Это решение для Codeigniter 3+, но не для Codeigniter 2 – semsem

0

Эти две функции group_start() и group_end() были реализованы в CodeIgniter 3.0.3. Здесь немного лучше, в соответствии с первоначальным вопросом.

$name1 = 'Bob'; 
$name2 = 'John'; 

$this->db->where('city', 'My City'); 
$this->db->where('state', 'My State'); 
$this->db->group_start(); 
$this->db->like('name', $name1); 
$this->db->or_like(('name', $name2); 
$this->db->group_end(); 
Смежные вопросы