php 自定义排序,thinkphp6.0自定义排序order by field

相信很多时候我们需要有个自定义排序的功能,比如登录用户的点赞排序到第一位等等。

![](https://cdn.micuer.com/data/upload/avatar/20210128/1b7ad4e34aeb62eee4442099261c33c2.jpg)

这种情况下我们一般都是使用自定义排序的功能,那么原生sql又是怎么实现的呢?

```

SELECT * FROM `ct_xxx` ORDER BY field(id,2,1,3) //示例代码

SELECT * FROM `zhe_work_order` WHERE ( `uid` = 221 ) AND `zhe_work_order`.`delete_time` IS NULL ORDER BY field(id,1798) desc

```

那么在thinkphp6.0中我们如何封装成这样的语句?

```

1

$list = WorkOrder::where("uid",$user["id"])

->orderRaw("field(id,2,12,9")

->select();

//或者 2

$list = WorkOrder::where("uid",$user["id"])

->orderRaw("field(id,8")

->select();

//或者3

Db::table('think_user')

->where('status', 1)

->orderRaw("field(name,'thinkphp','onethink','kancloud')")

->limit(5)

->select();

//或者 4

$list = WorkOrder::where("uid",$user["id"])

->orderRaw("field(id,1587) desc")

->select();

```

以上的方法都是可以的。建议使用第四种情况

本篇文章仅针对thinkphp6.0及以上版本,thinkphp5.0 - 5.1 3.2 等版本参考

https://blog.csdn.net/Aaroun/article/details/86631013

https://blog.csdn.net/qq_39973053/article/details/82864659

https://www.pianshen.com/article/36621161922/

相信以上资料可以帮助到大家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值