我应该在哪里在codeigniter模型中添加where子句?

时间:2018-03-12 11:40:06

标签: mysql codeigniter codeigniter-3

我只想创建一个排序查询。当我把where条款没有发生时。

$search_param['type']具有值时,它应该只输出sp_archive.SP_Type中具有$search_param['type']的那个

以下是查询:

function search_data($search_param){
    if(empty($search_param)){
        return array();
    }else{
    $this->db->select("sp_archive.SP_ID, SP_TITLE, SP_RATIONALE, SP_File, GROUP_CONCAT(Tag.Tag_Name) As Tag");
    $this->db->select("ad.Account_LastName AS ADLastName");
    $this->db->select("ad.Account_FirstName AS ADFirstName");
    $this->db->select("ad.Account_MiddleInitial AS ADMiddleInitial");

    $this->db->select("a.Account_FirstName AS AFirstName");
    $this->db->select("a.Account_MiddleInitial AS AMiddleInitial");
    $this->db->select("a.Account_LastName AS ALastName");

    $this->db->select("b.Account_FirstName AS BFirstName");
    $this->db->select("b.Account_MiddleInitial AS BMiddleInitial");
    $this->db->select("b.Account_LastName AS BLastName");

    $this->db->select("c.Account_FirstName AS CFirstName");
    $this->db->select("c.Account_MiddleInitial AS CMiddleInitial");
    $this->db->select("c.Account_LastName AS CLastName");

    $this->db->from("sp_archive");

    $this->db->join('account ad', 'sp_archive.Adviser = ad.Account_ID','left');
    $this->db->join('account a', 'sp_archive.Proponent_A = a.Account_ID','left');
    $this->db->join('account b', 'sp_archive.Proponent_B = b.Account_ID','left');
    $this->db->join('account c', 'sp_archive.Proponent_C = c.Account_ID','left');
    $this->db->join('tag', 'sp_archive.SP_ID = tag.SP_ID', 'inner');

    $this->db->where('sp_archive.SP_Type', array($search_param['type1'], $search_param['type2'],$search_param['type3'],$search_param['type4']));

    $this->db->like("SP_TITLE", $search_param['search']);   

    $this->db->or_like("ad.Account_LastName", $search_param['search']);
    $this->db->or_like("ad.Account_FirstName", $search_param['search']);
    $this->db->or_like("a.Account_LastName", $search_param['search']);
    $this->db->or_like("a.Account_FirstName", $search_param['search']);
    $this->db->or_like("c.Account_LastName", $search_param['search']);
    $this->db->or_like("c.Account_FirstName", $search_param['search']);
    $this->db->or_like("c.Account_LastName", $search_param['search']);
    $this->db->or_like("c.Account_FirstName", $search_param['search']);

    $this->db->group_by("sp_archive.SP_ID");
    $query = $this->db->get();
    return $query;
    }

2 个答案:

答案 0 :(得分:0)

根据我的评论您的代码应该像

 $this->db->where('sp_archive.SP_Type', array($search_param['type1'], $search_param['type2'],$search_param['type3'],$search_param['type4']));

 $this->db->group_start();
 $this->db->like("SP_TITLE", $search_param['search']);   

 $this->db->or_like("ad.Account_LastName", $search_param['search']);
 $this->db->or_like("ad.Account_FirstName", $search_param['search']);
 $this->db->or_like("a.Account_LastName", $search_param['search']);
 $this->db->or_like("a.Account_FirstName", $search_param['search']);
 $this->db->or_like("c.Account_LastName", $search_param['search']);
 $this->db->or_like("c.Account_FirstName", $search_param['search']);
 $this->db->or_like("c.Account_LastName", $search_param['search']);
 $this->db->or_like("c.Account_FirstName", $search_param['search']);
 $this->db->group_end();

答案 1 :(得分:0)

public function select_where($table,$where)
    {
          $r = $this->db->get_where($table,$where);
        // $sql  = $this->db->last_query();
        //echo $sql;
        $res = $r->result();
        //print_r($res);
        //die;
        return $res;
    }

相关问题