Php Codeigniter使用或类似搜索文本值的列

Php Codeigniter使用或类似搜索文本值的列,php,mysql,codeigniter,Php,Mysql,Codeigniter,我试图使用codeigniter并使用活动记录或类似的搜索mysql数据库,因此我的数据库如下所示 +----+---------------------+ | id | search_column | +----+---------------------+ | 1 | dog,cat,mouse,horse | | 2 | pig,lion,tiger | | 3 | eagle | +----+--------------------

我试图使用codeigniter并使用活动记录
或类似的
搜索
mysql
数据库,因此我的数据库如下所示

+----+---------------------+
| id |    search_column    |
+----+---------------------+
|  1 | dog,cat,mouse,horse |
|  2 | pig,lion,tiger      |
|  3 | eagle               |
+----+---------------------+
因此,我的第一种方法是使用
where_in
,因为我的输入来自一个复选框组并返回一个数组值,然后我将其存储到一个变量
$term=array('cat','dog','lion')

$this->db->where_in('search_column',$term)

但上面的方法不起作用,所以我尝试了下面的方法

foreach($term as $row){
  $this->db->or_like('search_column', $row);
}

而且也没有运气,因此目标输出必须基于字符串数组显示结果。任何建议都很好。

如果没有其他查询条件,可以先尝试一个不等条件

$this->db->where('0=1');
foreach($term as $row){
  $this->db->or_like('search_column', $row);
}

要从给定集合中查找值,可以使用

注意:这种类型的设计被认为是糟糕的设计,你应该规范你的结构,我建议你看看

改进

创建一个动物表和一个连接表,以将主表和动物关联起来

动物

id  name
1   cat
2   dog
3   lion
连接表

tid(main table pk) animal_id (animal table pk)
1                  1
1                  2
1                  3
从主表中删除
search\u列
,这样您就不会有任何冗余数据,搜索和优化会更容易

tid(main table pk) animal_id (animal table pk)
1                  1
1                  2
1                  3