使用活动记录形成查询

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

【讨论】:

以上是关于使用活动记录形成查询的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 活动记录查询

如何使用活动记录查询sql以获取指定时间之间的日期

使用 CI4 活动记录编写 SQL 子查询

codeigniter 活动记录,生成,但不执行查询

活动记录查询以获取关系[重复]

codeigniter 活动记录获取查询和不带 LIMIT 子句的查询