2015-03-13 73 views
1

我想问问你们中的任何人是否知道如何将or_where放在codeigniter中的某处?or_where里面功能活跃的记录

我想创建一个查询,如下图所示

select * 
from table 
where 
(
    (in = 0 and call_in = 1) or 
    (out = 0 and call_out = 1) 
) and 
mid = 0 
ORDER BY id DESC 
limit 1 

我创建了这样的事情

$result = $mysql_handler->select('*') 
         ->from("table") 
         ->where(
           array(
           "in"  => 0, 
           "call_in" => 1 
           ) 
         ) 
         ->or_where(
           array(
           "out"  => 0, 
           "call_out" => 1 
          ) 
         ) 
         ->where("mid", 0) 
         ->order_by("id", "DESC") 
         ->limit(1) 
         ->get(); 

但我知道这是不对的,因为这些代码会产生这样的

select * 
from table 
where 
    (in = 0 and call_in = 1) or 
    (out = 0 and call_out = 1) and 
    mid = 0 
ORDER BY id DESC 
limit 1 

我想将or_where放在where子句中,但我不确定if这是正确的或如何做到这一点。请建议谢谢。

回答

1

根据需要不能合并whereor_whereor_where可用于只有OR查询需要。你可以试试这个为您的解决方案

$this->db->from('table'); 
    $this->db->select('*'); 
    $this->db->where('((in = 0 and call_in = 1) OR (out = 0 and call_out = 1))'); 
    $this->db->where("mid", 0); 
    $this->db->order_by("id", "DESC"); 
    $this->db->limit(1); 
    $result=$this->db->get(); 

或者

$result = $mysql_handler->select('*') 
     ->from("table") 
     ->where('((in = 0 and call_in = 1) OR (out = 0 and call_out = 1))')    
     ->where("mid", 0) 
     ->order_by("id", "DESC") 
     ->limit(1) 
     ->get(); 
+0

是否有内部 的方式,其中('((在= 0和call_in = 1)或(满分= 0和call_out = 1) )') 使它像一个准备的声明?像 其中('((in =?和call_in =?)OR(out =?和call_out =?))',array(0,1,0,1)) 我不确定这是否可能 – 2015-03-14 06:35:09