带有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的主要内容,如果未能解决你的问题,请参考以下文章
在 MySQL 查询的 IF 条件中使用逻辑 OR 来检查 NoneType 或 float