2014-04-05 52 views
0

我有一個搜索功能,用於搜索數據庫中的用戶。Codeigniter用空格搜索

模型看起來像這樣

public function search_user_details($conditions){ 
$search = $conditions["search"]; 


$this->db->like('username', $search); 
$this->db->or_like('first_name', $search); 
$this->db->or_like('last_name', $search); 
$this->db->from($this->user_table); 
$this->db->select("id, first_name, last_name, username, password, email, bio, country,  avatar, cover, notes_check, verified, private, POST_SCORE, COMMENT_SCORE"); 
$this->db->limit(200); 
$query= $this->db->get(); 

results = $query->result_array(); 
return $results; 
} 

實施例中,用戶具有以下細節:如first_name =弗蘭,姓氏=艾裏,用戶名=呋喃。

如果我搜索這些她的任何細節,請返回:fran,allison。 如果我搜索:'Fran Allison'一起沒有任何回報。 eg $ conditions [「search」] =「Fran Allsion」

任何想法?

感謝

+0

傳遞給模型 –

+0

用戶名包含哪些該陣列? – Sadikhasan

+0

我已經更新了這個問題 –

回答

0
public function search_user_details($conditions) { 
    $search = $conditions["search"]; 

    $first = $search; 
    $last = $search; 

    // If the search contains a space, separate the two words. 
    if(preg_match('/\s/', $search)) 
    { 
      $name = explode(" ", $search); 
      $first = $name[0]; 
      $last = $name[1]; 
    } 

    $this->db->like('username', $search); 
    $this->db->or_like('first_name', $first); 
    $this->db->or_like('last_name', $last); 

    // This is in case they search Lastname first. 
    $this->db->or_like('first_name', $last); 
    $this->db->or_like('last_name', $first); 

    $this->db->from($this->user_table); 
    $this->db->select("id, first_name, last_name, username, password, email, bio, country,  avatar,  cover, notes_check, verified, private, POST_SCORE, COMMENT_SCORE"); 
    $this->db->limit(200); 
    $query= $this->db->get(); 

    results = $query->result_array(); 
    return $results; 
}