首页 热点专区 义务教育 高等教育 出国留学 考研考公

TP5框架如何order自定义排序

发布网友

我来回答

4个回答

热心网友

->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();
看见的朋友,如果对您有帮助的话请点个赞,谢谢!

热心网友

其实手册上已经写了

使用orderRaw

orderRaw("field(users.id, $ids)"),或者

order(Db::raw("field(users.id, $ids)"))

tp5手册

热心网友

使用tp的Expression类

别问我为什么知道,我也是遇到这种需求,然后看源码才搞定的

$exp = new \think\db\Expression('field(id,3,6,9,1,2,5,8,7)');
$result = $query->where(['id'=>['in','3,6,9,1,2,5,8,7']])->order($exp)->select();

热心网友

thinkphp使用的数据库是mysql,mysql多个字段排序的语句:
select
* from `表名` where 条件 order by 字段1 desc,字段2
asc,...
thinkphp中排序方法为
$User->where('score>0')->order('score desc')....;
但是例子中只能单字段排序,不过可以理解成字符串,那就可以这样写试试
$User->where('score>0')->order('score desc,id asc,...')....;追问

亲  能看清楚问题再回答吗?根本不对好不好,首先我问的是TP5框架order排序,其次我问的是自定义排序,没看问题直接网上复制粘贴别人的答案,我很恼火的,没看见我原生sql写法已经放上面了吗?,你直接复制别人的,还不看问题,你逗我啊,麻烦看清楚别人的问题,再看清楚我的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com