2011-06-07 163 views
0

我嘗試添加搜索功能添加到我的網站,用戶可以搜索使用部門名稱的工作,因此,例如,他們可能想搜索笨活動記錄幫助

IT,媒體,互聯網營銷

我想把這個搜索詞並返回所有的工作匹配的搜索詞,但是一個工作可能有多個部門,但我只希望工作返回一次。

下面是我當前的代碼,這是不行的,

public function getJobsBySector($criteria) 
{ 

     $criteria = explode("," $criteria); 
     $this->db->select('job_id, job_title, salary, retrain, bonuses_available, bonus_description, job_summary, job_description, company_name, company_summary, logo_small, logo_large, employers.employer_id') 
     ->from('jobs') 
     ->join('employers', 'employers.employer_id = jobs.employer_id', 'left') 
    // ->join('applications', 'applications.jobs_job_id = jobs.job_id', 'left') 
     $i = 0; 
     foreach($criteria as $cri) { 
      $this->db->like('sector', $cri[$i]) 
      $i++; 
     } 

     $query = $this->db->get(); 

     return $query->result_array(); 
} 
+0

考慮更改問題標題以便其他人可以找到它。 – bassneck 2011-06-07 12:33:26

回答

1

的MySQL的SELECT可以有DISTINCT修改,這將使其返回任何匹配的行只有一次。 Codeigniter有一個特殊的方法可以將DISTINCT添加到您的查詢中。

... 
$this->db->select('job_id, job_title, salary, retrain, bonuses_available, bonus_description, job_summary, job_description, company_name, company_summary, logo_small, logo_large, employers.employer_id') 
->disctinct() 
->from('jobs') 
... 
0

首先,這是錯誤的foreach使用:

foreach($criteria as $cri) { 
    $this->db->like('sector', $cri[$i]) 
    $i++; 
} 

它應該是:

foreach($criteria as $cri) { 
    $this->db->like('sector', $cri) 
} 

但是這將產生...喜歡的東西 LIKE something_else查詢,這不是你想要的,所以正確的版本應該是這樣的:

foreach($criteria as $cri) { 
    $this->db->or_like('sector', $cri) 
} 

只要扇區字段是字符串,不用擔心返回工作一次,在這裏考慮您的代碼似乎是這種情況。