Группирование предложений WHERE в Codeigniter

Я хочу создать следующий код 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 , которое бросает приоритет оператора в беспорядке без возможности использовать () для изменения порядка.

** Есть ли способ решить эту проблему? **

17
задан Nyxynyx 24 June 2011 в 17:54
поделиться