Codeigniter Active Records LIKE查询

时间:2013-07-08 18:36:19

标签: php mysql codeigniter

我正在使用Codeigniter创建一个新闻网站,我有一个文章 MySQL 表格 ID,标题,正文,类别,创建等...

在“类别”字段中,我将类别用逗号(,)分隔,如...

  • 第1条分类:国家,犯罪,电影
  • 第2条分类:国家,城市,戏剧
  • 第3条分类:搞笑,国际,电影
  • 第4条分类:国家,犯罪,电影

我想获取特定类别的文章..如国家(1,2,4)。 我尝试了很多方法但似乎没什么用。

请帮助谢谢。

1 个答案:

答案 0 :(得分:2)

您可以使用FIND_IN_SET方法查询Categories字段

FIND_IN_SET('Crime', your_table.Categories)

您的方法存在许多缺点,从长远来看,将表格关系更改为Categories会更具可扩展性。您可以使用manytomany关系和联接表来更轻松地查询您的类别。

FIND_IN_SET将执行全表扫描,并且使用此逗号分隔方式将非常难以聚合,并获得文章/类别计数。


Is storing a delimited list in a database column really that bad?

Bill Karwin将这种反模式作为他出色书中的第一章。