使用活动记录形成查询
Posted
技术标签:
【中文标题】使用活动记录形成查询【英文标题】:Forming a query with active record 【发布时间】:2012-03-20 08:12:12 【问题描述】:我正在尝试使用 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】:您可以使用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%'
【讨论】:
以上是关于使用活动记录形成查询的主要内容,如果未能解决你的问题,请参考以下文章