简体   繁体   English

我应该在codeigniter模型的何处添加where子句?

[英]Where should I add the where clause in a codeigniter model?

I just want to create a sorting query. 我只想创建一个排序查询。 When I put the where clause nothing happened. 当我放置where子句时,什么也没发生。

What should happen is when $search_param['type'] has value it should only output the one who has the $search_param['type'] in sp_archive.SP_Type $search_param['type']具有值时,应该只输出在sp_archive.SP_Type中具有$search_param['type']的那个值。

Below is the query: 下面是查询:

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

As per my comment Your code should be like 根据我的评论您的代码应该像

 $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();

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM