Codeigniter:从查询中提取部分数据

时间:2015-03-06 15:16:35

标签: codeigniter model

我有一个小问题: 假设我有一个很长的问题:

$this->db->select('*')
     ->from('x')
     ->join(...)
     ->where('y >',$id)
     ->where('z <',$nr)
     ->where(...)
     ...

如何将所有where语句放入不同的变量中,以便我可以单独使用它们但只使用一个查询? 谢谢。

1 个答案:

答案 0 :(得分:1)

您需要创建不同的模型方法。每个方法都应该具有where查询输出结果。在控制器中,您可以调用这些方法中的每一个并将结果存储在变量中。 为什么不这样做:

控制器:

function controller_method(){
    $res1 = $this->model_name->get_where_results1($id, $nr);
    $res2 = $this->model_name->get_where_results2($id, $nr);
    $res3 = $this->model_name->get_where_results3($id, $nr);
}

型号:

function get_where_results1($id, $nr) {
    $this->db->select('*')
            ->from('x')
            ->join("")
            ->where("");
    $query = $this->db->get();
    return $query->result();
}
function get_where_results2($id, $nr) {
     $this->db->select('*')
            ->from('x')
            ->join("")
            ->where("");
    $query = $this->db->get();
    return $query->result();
}
function get_where_results3($id, $nr) {
     $this->db->select('*')
            ->from('x')
            ->join("")
            ->where("");
    $query = $this->db->get();
    return $query->result();
}

更新 - 如果您想使用过滤器,我会这样:

控制器:

function controller_method() {
    $res1 = $this->model_name->model_method($filters);
}

型号:

function model_method($filters) {
    $this->db->select('*');
    $this->db->from('x');
    $this->db->join("");
    if ($filters['filt1']) {
        $this->db->where("something", $filters['filt1']);
    }
    if ($filters['filt2']) {
        $this->db->where("something", $filters['filt2']);
    }

    $query = $this->db->get();
    return $query->result();
}