简体   繁体   中英

Codeigniter Active Records LIKE Query

I am making a news website with Codeigniter, and I have an Articles MySQL table like ID,Title,Body,Categories,Created etc...

In Categories field I have category separated with comma(,) like...

  • Article 1 Categories : National,Crime,Cinema
  • Article 2 Categories : National,City,Drama
  • Article 3 Categories : Funny,International,Cinema
  • Article 4 Categories : National,Crime,Cinema

I want to fetch article with Specific Category.. like National (1,2,4) . I tried many methods but nothing seems to work.

Please Help Thanks.

you can use FIND_IN_SET method to query your Categories field

FIND_IN_SET('Crime', your_table.Categories)

Your approach has a number of shortcomings, It would def be more scalable in the long run to change your tables relationship to Categories . You can use a manytomany relationship and a join table to more easily query your categories.

FIND_IN_SET will do a full table scan, and using this comma seperated way will be very difficult to aggregate, and get article/category counts.


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

Bill Karwin has included this anti pattern as the first chapter in his excellent book.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM