Это можно сделать: (условие 1 И условие2) ИЛИ (условие 3 И условие4) в codigniter?
Я попробую:
$this->db->where(condition1 - condition2); $this->db->or_where(condition3 - condition4);
Но это: (условие1 И условие2) ИЛИ (условие3 ИЛИ условие4)
Просто напишите в своем
$this->db->where("(condition1 AND condition2) OR (condition3 AND condition4)");
это все равно позволит избежать данных, и вам не нужно обманывать метод or_where.
Вы пробовали вот так ::::?
$this->db->where(COND1); $this->db->where(COND2); $this->db->or_where(COND3); $this->db->where(COND4);
$first="(COND1 AND COND2)"; $second= "(COND3 AND COND4)"; $query=$this->db->where($first)->or_where($second)->get();
да, для удобства можно использовать любые условия, которые вы хотите использовать в одной переменной
$where ="(condition 1 AND condition2) OR (condition3 AND condition4)"; $this->db->where($where);
Просто используйте обычный запрос:
$query="SELECT * FROM table1 INNER JOIN table2 on table1.col=table2.col WHERE (table1.whatever=? AND table1.hello=?) OR (table2.foo=? AND table2.pizza=?) LIMIT 1"; $params=array(); $params[]='whatever'; $params[]='world'; $params[]='bar'; $params[]='cheese'; $result=$this->db->query($query,$params); $result=$result->result_array(); print_r($result);
от$query="SELECT * FROM table1 INNER JOIN table2 on table1.col=table2.col WHERE (table1.whatever=? AND table1.hello=?) OR (table2.foo=? AND table2.pizza=?) LIMIT 1"; $params=array(); $params[]='whatever'; $params[]='world'; $params[]='bar'; $params[]='cheese'; $result=$this->db->query($query,$params); $result=$result->result_array(); print_r($result);
Если вы используете PHP5, то следующий код исправит вашу проблему.
$this->db->select("*") ->where("condition_1 && condition_2") ->or_where("condition_3 && condition_4");
Или использовать следующий код также будет работать.
$this->db->where("condition_1 "); $this->db->where("condition_2"); $this->db->or_where("condition_3 "); $this->db->where("condition_4 ");