Как сделать php codeIgniter активной группой записей? - PullRequest
0 голосов
/ 13 сентября 2011

Во-первых, у меня есть кое-что в моей модели:

    $this->db->where('status', $aStatus);     
    $this->db->limit($aLimit, $aOffset);   

    $this->db->or_like('title', $aString);    
    $this->db->or_like('description', $aString);    

    $this->db->select('id,description,title,fee');

    $query = $this->db->get($this->table_name); 

И я получил этот запрос:

ВЫБРАТЬ id, description, title, fee ОТ (events) ГДЕ status = 0 AND title LIKE '% space%' OR description LIKE '% space%' LIMIT 5

Но я бы хотел, чтобы вместо этого он генерировал этот запрос

ВЫБРАТЬ id, description, title, fee ОТ (events) ГДЕ status = 0 И (title LIKE '% space%' ИЛИ ​​description LIKE '% space%' ) LIMIT 5

Как я могу изменить это? Спасибо.

Ответы [ 3 ]

1 голос
/ 09 ноября 2016

Группировка LIKE (с круглыми скобками)

$this->db->group_start();
$this->db->like('name', $query_array['q']);
$this->db->or_like('description', $query_array['q']);
$this->db->group_end();

Будет производить круглые бэкеты, как это

 (
   `name` LIKE '%test%' ESCAPE '!' 
    OR  `description` LIKE '%test%' ESCAPE '!' 
 )
1 голос
/ 13 сентября 2011

Подумайте, единственный способ, которым вы справитесь, это сделать что-то вроде:

$this->db->where('status', $aStatus);
$this->db->where("(title LIKE '%space%' OR description LIKE '%space%')");
$this->db->limit($aLimit, $aOffset);   

$this->db->select('id,description,title,fee');

$query = $this->db->get($this->table_name); 

Не проверял это, но он должен помочь вам в этом.Кроме этого, я не думаю, что можно включить сгруппированный / заключенный в скобки запрос любым другим способом.

0 голосов
/ 26 июля 2012

Я бы просто сделал что-то вроде

$this->db->where('status', $aStatus);     
$this->db->limit($aLimit, $aOffset);   

$this->db->where(sprintf(
    '(title LIKE %s OR description LIKE %s)',
    $this->db->escape_like_str($aString),    
    $this->db->escape_like_str($aString)
), NULL);    

$this->db->select('id,description,title,fee');

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