MySQL 在 Codeigniter 中使用 If 条件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);

$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;
}

相关内容

  • 没有找到相关文章

最新更新