Я хочу создать следующий код SQL, используя Active Records в Codeigniter:
WHERE name != 'Joe' AND (age < 69 OR id > 50)
Выполнение следующего кажется мне настолько далеко, насколько я могу , Я не могу понять, как их сгруппировать
$this->db->select()->from('users')->where('name !=', 'Joe')->where('age <', 69)->or_where('id <', $id);
Есть идеи? Мой SQL-запрос слишком сложен, поэтому я не хочу переписывать все на традиционный SQL.
ОБНОВЛЕНИЕ
Мой SQL-код динамически генерируется в зависимости от значений определенных параметров, переданных в метод модели. Проблема с невозможностью использовать круглые скобки вызывает проблему, потому что приоритет оператора таков, что AND
вычисляется сначала перед OR
.
* Вот фрагмент кода моих активных записей,где есть другой код до и после него:
... some $this->db->where() ...
... some $this->db->where() ...
if($price_range) {
$price_array = explode('.', $price_range);
for($i = 0; $i < count($price_array); $i++) {
if($i == 0) {
$this->db->where('places.price_range', $price_array[$i]);
} else {
$this->db->or_where('places.price_range', $price_array[$i]);
}
}
}
... some $this->db->where() ...
... some $this->db->where() ...
Проблема возникает из-за того, что я использую $ this-> db-> or_where ()
, который вводит предложение OR
, которое бросает приоритет оператора в беспорядке без возможности использовать ()
для изменения порядка.
** Есть ли способ решить эту проблему? **