对于想要在tp5.1的框架对排序增加自己想要的条件进行排序,我们可以用 方法:orderRaw,在tp5文档中也有说明,order · ThinkPHP5.1完全开发手册 · 看云
比如现在我想对项目中两个字段进行排序,一个字段表示上下架 用is_online 表示,另外一个字段售卖的结束时间 用end_time表示,那么要实现上架的和有效期内的同时满足排在最前面,下架的和已过期的排在最后,项目中有的结束时间是为0的 ,也就是表示没有时间限制,这个也要排在前面,实现的代码如下:
->orderRaw('is_online desc,(case when t.end_time = 0 then 1 when t.end_time > unix_timestamp(now()) then 1 else 0 END) desc )
如果是是想 end_time 不判断是否为0,代码如下:
->orderRaw('is_online desc,if(t.end_time > unix_timestamp(now()),1,0) desc)