codeigniter mulitple LIKE db query使用关联数组 - 但是所有来自相同的列名...?

Ini*_*igo 3 foreach codeigniter chained

我正在尝试使用codeigniter的活动记录类来查询我的数据库.我有一些存储在表格中的博客文章.该查询用于搜索功能,该功能将提取分配给它们的特定类别的所有帖子.因此,表格的"类别"列将列出该帖子的所有类别,没有特定的顺序,以逗号分隔,如下所示:政治,历史,社会学等.

如果用户选择,例如,政治和历史,则应返回具有这些类别的所有帖子的标题.

对?因此,查询的类别列表将是数组$ cats.我以为这会有用 -

foreach ($cats as $cat){
    $this->db->like('categories',$cat);
}
Run Code Online (Sandbox Code Playgroud)

通过制作这个 -

$这 - > DB->像( '类别', '政治'); $这 - > DB->像( '类别', '历史');

(这将产生''类别类似'政治%'和类别类似'%历史%')

但它不起作用,似乎只产生了第一个声明.我猜的问题是每个链式查询的列名是相同的.CI用户指南中似乎没有任何内容(http://codeigniter.com/user_guide/database/active_record.html),因为它们似乎假设每个链式语句将用于不同的列名.有谁知道我怎么做到这一点?

谢谢!

编辑 - 当然不可能在一个语句中使用关联数组,因为它必须包含重复键 - 在这种情况下,每个键都必须是'类别'...

Sea*_*den 5

关于MySQL,我只是在我的数据库上运行以下查询,没有任何问题.

 SELECT * 
 FROM  `TicketUpdates` 
 WHERE content LIKE  '%update%'
 AND content LIKE  '%footprints%';
Run Code Online (Sandbox Code Playgroud)

同样,以下代码按预期运行:

 $this->db->select('*'); 
 $this->db->from('TicketUpdates');
 $this->db->like('content', 'update');   
 $this->db->like('content', 'footprints');       
 print_r($this->db->get()->result());
Run Code Online (Sandbox Code Playgroud)

如果你在CI中使用'like'函数,你必须使用正确的查询函数为它们添加前缀和后缀,例如:

 $this->db->select('*');
 $this->db->from('tablename');
 foreach($cats as $cat){
    $this->db->like('categories', $cat);
 }
 $result = $this->db->get();
Run Code Online (Sandbox Code Playgroud)