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