发布网友
共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("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)');
热心网友
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写法已经放上面了吗?,你直接复制别人的,还不看问题,你逗我啊,麻烦看清楚别人的问题,再看清楚我的