使用活动记录形成查询

时间:2012-03-01 19:45:56

标签: php mysql arrays codeigniter foreach

我正在尝试使用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%

可以这样做吗?

1 个答案:

答案 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%'