thinkphp3、thinkphp5框架中,如何用order()实现自定义排序呢?非常有用!

thinkphp3、thinkphp5框架中,如何用order()实现自定义排序呢?

sql: select * from table where id IN (3,6,9,1,2,5,8,7) order by field(id,3,6,9,1,2,5,8,7); mysql原生语句是这样实现! 
在thinkphp3、thinkphp5框架中,如何用order()实现自定义排序呢?下面一起来看看吧!

其实非常简单原理非常简单,如下:

->order("field(id,3,6,9,1,2,5,8,7)")
如果使用模型查询的话就是:表名::where("id","in","3,6,9,1,2,5,8,7")->order("field(id,3,6,9,1,2,5,8,7)")->select();

最终代码示例:

//把结尾的逗号,去掉
            $ids = explode(',',$ids);
            $idsArr = [];
            foreach ($ids as $ckey => $cvalue) {
                if(!ctype_space($cvalue) && !empty($cvalue)){
                    $idsArr[] =trim($cvalue);
                }
            }
            $its= implode(',',$idsArr);

$items = $this->iTable
            ->alias('i')
            ->join('sss AS s ON s.id = i.id')
            ->where($where)
            ->order("field(i.id,".$its.")")

           getField('i.id');

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值