TP5框架如何order自定义排序

sql:select*fromtablewhereidIN(3,6,9,1,2,5,8,7)orderbyfield(id,3,6,9,1,2,5,8,7);我想实现这样... 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); 我想实现这样
但是TP5框架order有点问题求大神帮助
展开
 我来答
龙卷风中的孩子
2017-12-27
知道答主
回答量:11
采纳率:0%
帮助的人:10万
展开全部
->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();
看见的朋友,如果对您有帮助的话请点个赞,谢谢!
半桥烟云半青云
2019-05-10
知道答主
回答量:2
采纳率:0%
帮助的人:1489
展开全部

其实手册上已经写了

使用orderRaw

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

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

tp5手册

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小白小黑大小花五只喵
2018-07-05
知道答主
回答量:12
采纳率:100%
帮助的人:10.3万
展开全部

使用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();
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
最柔人天忆16
2017-12-06 · TA获得超过1935个赞
知道小有建树答主
回答量:2.1万
采纳率:33%
帮助的人:1369万
展开全部
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写法已经放上面了吗?,你直接复制别人的,还不看问题,你逗我啊,麻烦看清楚别人的问题,再看清楚我的

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式