ThinkPHP使用MySQL的case函数

当前有一个需求,记录有置顶功能。其中表字段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_time
                    ELSE 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_time
    ELSE 0 END AS top_weigh

上面的CASE函数是使用置顶到期字段和当前时间进行比较,如果在置顶期限内top_weigh就等于top_begin_time字段,否则等于0.这样就可以按top_weigh进行排序了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值