带有Codeigniter中If条件的MySQL get_where

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有Codeigniter中If条件的MySQL get_where相关的知识,希望对你有一定的参考价值。

我在模型中具有以下功能,可以明智地过滤人员记录。该功能运行正常。

public function getOfficer()
    {
        $q = $this->db->order_by('last_name','ASC')->get_where('tbl_officer', array('status' => '1', 'usr' =>$this->session->userdata('id_user')));    
        if ($q->num_rows() > 0) {
            return $q->result();
        }
        return false;
    }

此外,我想仅通过p_code-> 8,10和24来过滤会话中仅该用户= 4的官员记录

If函数如下:

if($usr == 4)
        {
        $this->datatables->where('tbl_officer.p_code', 8)->or_where('tbl_officer.p_code', 10)->or_where('tbl_officer.p_code', 24);

        } else {
        $this->datatables->where('tbl_officer.usr', $usr);
    }

如何将这个If条件包含在上述模型函数中?有什么可以改变的?谁能帮忙?

答案

请使用where_in

$this->datatables->where('tbl_officer.p_code', 8)->or_where('tbl_officer.p_code', 10)->or_where('tbl_officer.p_code', 24);

to

$this->datatables->where_in('tbl_officer.p_code', [8,10,24]);
另一答案

只需更改查询编写方法

public function getOfficer()
 {
     $usr = $this->session->userdata('id_user');
     $userArray = array(8,10,24);
     $this->db->select('*');
     $this->db->from('tbl_officer');
     if($usr == 4){
        $this->db->where_in('usr',$userArray );
     }else{
        $this->db->where('usr',$usr);
     }
     $q = $this->db->get();
     if ($q->num_rows() > 0) {
        return $q->result();
     }
     return false;
}

以上是关于带有Codeigniter中If条件的MySQL get_where的主要内容,如果未能解决你的问题,请参考以下文章

带有 Codeigniter MYSQL 查询的数据表

mysql语句where条件中的是啥意思

带有逗号分隔值的 Codeigniter Mysql 列

在 MySQL 查询的 IF 条件中使用逻辑 OR 来检查 NoneType 或 float

使用 codeigniter 中的 where 条件计算非空值

IF语句在哪里(codeigniter活动记录)