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