当前有一个需求,记录有置顶功能。其中表字段top_expire_time保存记录置顶到期时间,表字段top_begin_time保存设置置顶的时间。需求是设置置顶的时间比较晚的记录,要排在设置置顶早的前面。查询代码如下:
$lists = Job::alias('j')->where('j.status','3')->field(array('j.id','j.category_id','j.zhaopin_type','j.zuidixueli','j.jingyanyaoqiu','j.salary_month_d','j.salary_month_g','CASE WHEN j.top_expire_time > UNIX_TIMESTAMP(NOW()) THEN j.top_begin_timeELSE 0 END AS top_weigh','j.linkman','j.linkphone'))->order('top_weigh desc,id desc')->paginate();
CASE WHEN j.top_expire_time > UNIX_TIMESTAMP(NOW()) THEN j.top_begin_timeELSE 0 END AS top_weigh
上面的CASE函数是使用置顶到期字段和当前时间进行比较,如果在置顶期限内top_weigh就等于top_begin_time字段,否则等于0.这样就可以按top_weigh进行排序了