if条件和where子句


if condition with where clause

我只想这样做,如果(状态==0),那么只有在条件运行的地方,并且打印只与状态==0记录相关。当状态==1出现时,它会绕过where子句,同时打印状态0和1的数据。我不知道如何为此构建查询。请帮我一下。

我的型号代码

 function listing(){    
 $admin_id = $this->session->userdata('admin_id');
 $query = $this->db->select('student_info.*,admin.status')
         ->from('student_info')
         ->where('student_info.admin_id',$admin_id)
         ->join('admin','admin.admin_id = student_info.admin_id')
         ->get();
 return $query->result();
 }

此代码工作正常,并打印状态为0或1的单独数据。

只有admin_id=1包含状态=1,其他id包含0状态。

用以下代码替换您的函数。。。

<?php
function listing($status)
{     
    $this->db->select('student_info.*,admin.status');
    $this->db->from('student_info');
    if($status==0) 
    {
        $this->db->where('student_info.admin_id',$admin_id);
    }
    $this->db->join('admin','admin.admin_id = student_info.admin_id');
    $query = $this->db->get();
    return $query->result();
}
?>

试试这个:

        function listing(){    
            $admin_id = $this->session->userdata('admin_id');
            $query = $this->db->select('student_info.*,admin.status')
                ->from('student_info')                    
                ->join('admin','admin.admin_id = student_info.admin_id')
                ->where("student_info.admin_id = IF (admin.status = 0, $admin_id, '>-1'")
                ->get();
            return $query->result();
        }

它解决了我的问题。。

function listing()  
 {  
$admin_id = $this->session->userdata('admin_id');
$this->db->select('student_info.*,admin.status');
$this->db->from('student_info');
$this->db->join('admin','admin.admin_id = student_info.admin_id');
$this->db->where('student_info.admin_id',$admin_id);
$this->db->or_where('admin.status < 1');
$query = $this->db->get();
return $query->result();
}
    <?php
    function listing($status)
    {     
if($status == 0){
$this->db->select('student_info.*,admin.status');
        $this->db->from('student_info');
        $this->db->where('student_info.admin_id',$admin_id);
        $this->db->join('admin','admin.admin_id = student_info.admin_id');
        $query = $this->db->get();
        return $query->result();
}else{
$this->db->select('student_info.*,admin.status');
        $this->db->from('student_info');
        $this->db->join('admin','admin.admin_id = student_info.admin_id');
        $query = $this->db->get();
        return $query->result();
}

    }
    ?>