Codeigniter多个条件

时间:2017-10-05 09:55:04

标签: php mysql codeigniter

我遇到问题我只想选择具有user_id = $ this-> session-> id,status = 4小时,8小时并在家工作的特定行。

编辑: 我的所有状态是

  • 在家工作

  • 8小时

  • 4小时

  • 休假

  • 病假

但发生的事情是它只返回特定user_id的所有Work From Home,而不包括4小时和8小时状态

控制器

$order_by = "id desc";
$where = ['user_id' => $this->session->id,'status' => '4 hours', 'status' => '8 hours','status' => 'Work From Home'];
$this->Crud_model->fetch('record',$where,"","",$order_by);

MODEL

public function fetch($table,$where="",$limit="",$offset="",$order=""){
    if (!empty($where)) {
        $this->db->where($where);   
    }
    if (!empty($limit)) {
        if (!empty($offset)) {
            $this->db->limit($limit, $offset);
        }else{
            $this->db->limit($limit);   
        }
    }
    if (!empty($order)) {
        $this->db->order_by($order); 
    }

    $query = $this->db->get($table);
    if ($query->num_rows() > 0) {
        return $query->result();
    }else{
        return FALSE;
    }
}

2 个答案:

答案 0 :(得分:1)

尝试以下方法:

<强>控制器:

$order_by = "id desc";
$where = ['user_id' => $this->session->id];
$where_in = ['name' => 'status', 'values' => ['4 hours', '8 hours', 'Work From Home']];
$this->Crud_model->fetch('record',$where,"","",$order_by, $where_in);

<强>型号:

public function fetch($table,$where="",$limit="",$offset="",$order="", $where_in = false){
    if (!empty($where)) {
        $this->db->where($where);   
    }
    if (!empty($limit)) {
        if (!empty($offset)) {
            $this->db->limit($limit, $offset);
        }else{
            $this->db->limit($limit);   
        }
    }
    if (!empty($order)) {
        $this->db->order_by($order); 
    }

    if($where_in)
    {
        $this->db->where_in($where_in['name'], $where_in['values']);
    }

    $query = $this->db->get($table);
    if ($query->num_rows() > 0) {
        return $query->result();
    }else{
        return FALSE;
    }
}

这使用where_in功能获取这些status值的所有记录。

答案 1 :(得分:0)

Associate Array方法:

    $array = array('name' => $name, 'title' => $title, 'status' => $status);

    $this->db->where($array); 

 // Produces: WHERE name = 'Joe' AND title = 'boss' AND status = 'active'

或者如果你想做除比较

以外的事情
   $array = array('name !=' => $name, 'id <' => $id, 'date >' => $date);

$这 - &GT; DB-化合物其中($阵列);