Intereting Posts
доступ запрещен PHP с платформы Blackberry 10 с помощью phonegap – закрыт Загрузите видео на Youtube с помощью curl и api v3 вызов метода DoReferenceTransaction, приводящего к ошибке Есть ли более простой способ убедиться, что значение в массиве равно чем-то php? Безопасное соединение PHP с сеансами WSDL прерывается после обновления сертификата сервера Поиск многомерного массива для значения PHP Ошибка в получении последнего вставленного идентификатора запроса с использованием пакетной вставки в CodeIgniter getElementByAttribute PHP DOM Насколько актуальны отчеты Amazon MWS? Magento: Fatal error: Class 'Mage_Giftcards_Helper_Data' не найден в … / app / Mage.php в строке 546 Выполнять скрипты AJAX возвращает Автозаполнение JQuery в codeigniter для получения значений, но не отображения их Laravel 4 Аутентификация не работает с субдоменами Как использовать результат mysql_fetch_array? Сценарий Python не выполняется должным образом из Php

Объединение операторов `where` и` like` с помощью CI activerecords

Короче говоря: возможно ли, и если это так – как я могу построить запрос, который выглядит примерно так, как этот?

SELECT * FROM a WHERE row = 1 AND (other_row LIKE '%..%' OR another_row LIKE '%..%') 

В принципе, я не могу найти решение этой проблемы. Я просто не могу понять, как добавить скобки в запрос activerecords. Возможно ли это?

Мой текущий код:

 $data = $this->where('row', 1) ->like('another_row', '...') ->or_where('row', 1) ->like('other_row', $search) ->get('a') ->result(); 

Результат:

 SELECT * FROM (`a`) WHERE `row` = 1 OR `row` = 1 AND `another_row` LIKE '%...%' AND other_row` LIKE '%...%' 

Вы можете попробовать это.

  $query = $this->db->select('*') ->from('a') ->where('row',1) ->where("(other_row LIKE '%%' OR another_row LIKE '%%' )") ->get(); foreach ($query->result() as $row) { //do sth. } 

Вы можете написать строку пользовательского запроса (из активного класса записи)

  Custom string: You can write your own clauses manually: $where = "name='Joe' AND status='boss' OR status='active'"; $this->db->where($where); 

Почему вы не пытаетесь это сделать:

  $this->db->where("row = 1 AND (other_row LIKE '%..%' OR another_row LIKE '%..%')"); $this->db->get('a'); 

Это то, как вы можете писать пользовательские ГДЕ в CI. Если это не то, что нужно искать, не стесняйтесь объяснять

У меня также проблема с or_where поэтому я просто делаю свой пользовательский запрос, например

 $this->db->query("SELECT * FROM `a` WHERE `row`=1 AND (CONDITION1 OR CONDITION2)") 
 $sql= "SELECT * FROM `a` WHERE row = '1' AND (other_row LIKE '%" . $value . "%' OR another_row LIKE '%" . $value . "%')"; $this->db->query($sql); 

Вы можете использовать следующее:

 $this->db->like('title', 'match', 'before'); 

Он будет производить:

 WHERE `title` LIKE '%match' ESCAPE '!'