【问题标题】: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%

这个可以吗?

【问题讨论】:

    标签: php mysql arrays codeigniter foreach


    【解决方案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%'
    

    【讨论】:

      猜你喜欢
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-10
      • 2013-02-01
      • 2013-04-23
      • 2016-11-10
      • 1970-01-01
      相关资源
      最近更新 更多