【发布时间】:2013-08-08 11:46:56
【问题描述】:
我正在使用 CodeIgniter 和活动记录。我有posts 表:
id | title | body | accepted | deleted
一旦用户输入一个单词,如果 title 或 body 在这些帖子中,将建议匹配数据库的 6 帖子。
我想要做的是优先考虑那些在title 中包含该短语的帖子,而不是那些仅在 body 中包含该短语的帖子。怎么办?
$query = $this->db->select('id,title,body')
->from('posts')
->where(array('accepted'=>'1'))
->where(array('deleted'=>'0'))
->like('title', $seached_text)
->or_like('body', $seached_text)
->limit(6)
->order_by('title','asc');
【问题讨论】:
-
我不知道如何在 codeigniter 中执行此操作,但我知道如何在 sql 中执行此操作,也许这会对您有所帮助:
SELECT id, title, body FROM posts WHERE title LIKE '$seached_text' OR body LIKE '$seached_text' ORDER BY IF( title LIKE '$seached_text', CONCAT(1,'$seached_text'), CONCAT(2,'$seached_text') )这就是我没有将其发布为答案的原因 -
似乎
if和case不能用作活动记录。 -
您有 2 个选择:1. 执行 SQL 查询 2. 在执行 codeigniter 查询后对结果进行排序
标签: php mysql database codeigniter activerecord