我正在尝试使用codeigniter的活动记录形成查询,搜索基于用户可以输入的逗号分隔列表。
我知道如何将搜索条件视为单独的值:
$criteria = explode($this->input->post('search_criteria');
我不知道的是我如何在我的模型中创建一个查询,根据标准的数量创建足够的比较。
例如,如果用户要搜索PHP, HTML, Project Management
我需要一个看起来像这样的查询,
SELECT * FROM candidates WHERE candidate_job_tags LIKE %PHP% OR WHERE candidate_job_tags LIKE %HTML% OR WHERE candidate_job_tags LIKE %Project Management%
可以这样做吗?
答案 0 :(得分:2)
您可以使用Active Record class'or_like()
方法构建查询的这一部分:
// Assuming your array looks like something like this
$criteria = array('PHP', 'HTML', 'Project Management');
foreach($criteria as $key=>$val){
$this->db->or_like('candidate_job_tags', $val);
}
$query = $this->db->get('candidates');
会产生如下所示的查询:
SELECT * FROM (`categories`) WHERE `category_title` LIKE '%PHP%' OR `category_title` LIKE '%HTML%' OR `category_title` LIKE '%Project Management%'