【黄啊码】thinkphp sql wherein的排序问题|tp不能按whereIn排序?
【摘要】
很多时候我们使用wherein的时候是想按wherein里边的数组进行排序,但数据库查询的时候就会默认按照主键id进行升降序排序,在这里我们用以下方法:
tp5.1之前是这么走:
$ids = implode(',',[1,2.3.4.5]); $exp = new Expres...
很多时候我们使用wherein的时候是想按wherein里边的数组进行排序,但数据库查询的时候就会默认按照主键id进行升降序排序,在这里我们用以下方法:
tp5.1之前是这么走:
-
$ids = implode(',',[1,2.3.4.5]);
-
$exp = new Expression('field(id,'.$ids.')');
-
$datas = Db::name('think_user')
-
->whereIn('id',$ids)
-
->field('id,status')
-
->order($exp)
-
->select();
-
dump($datas);
然而tp5.1.7之后的版本就会出现排序表达式错误:field(`id`...
解决方法:
在V5.1.7+版本开始,如果你需要在order方法中使用mysql函数的话,必须使用下面的方式:
1 2 3 4 5 |
|
哎,只能说都是坑!!!!
文章来源: markwcm.blog.csdn.net,作者:黄啊码,版权归原作者所有,如需转载,请联系作者。
原文链接:markwcm.blog.csdn.net/article/details/121075949
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)