thinkphp使用where in查询order按照in的顺序排序
发表于:2023-02-20 22:56:22浏览:120次
thinkphp使用各种查询语句确实很方便,但是也有个别特殊的查询,这里主要介绍一下如何保证mysql查询按in的顺序输出。
1、ThinkPHP6使用in查询如何保证顺序:orderRaw(field(id,’3,4,2,1,6,13’)),举例子:
$ids = '1,5,9,6,8,3,2';
$exp = ("field(id,".$ids.")");
$list = Db::name('Material')
->where([['id','in',$ids]])
->orderRaw($exp)
->select();
2、ThinkPHP5的方式:
引入use think\db\Expression;
<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
use think\db\Expression;
class Test extends Controller
{
public function index()
{
$ids = implode(',',[1,4,844,6,900,10]);
$exp = new Expression('field(id,'.$ids.')');
$list = Db::name('Material')
->whereIn('id',$ids)
->field('id,rank')
->order($exp)
->select();
}
}
另一种写法:
// 详情
public function detail($ids = ''){
$combination = $this->model->get($ids);
// 根据goods—ids 里面的值,按照原来的排序出来
//$combination['goods_ids'] == 1,5,4,7,1,3
$exp = new Expression("field(id,{$combination['goods_ids']})");
$goods = Goods::where("FIND_IN_SET(`id`,'{$combination['goods_ids']}')")
->field('id')
->orderRaw("field(id,{$combination["goods_ids"]})")
->select();
}
推荐文章
- 谷歌发布全新操作系统chromeOS Flex首个稳定版,可用于 PC 和 Mac
- 今晚新剧,碧血玄黄7/8集:金锋动,银剑现,道象阴阳变
- Layui的table模块导出所有数据,无需修改代码,完美解决方案
- 82个常规的前端JavaScript方法封装(61~70)
- 微信小程序image属性mode的13种模式
- tinnkphp6使用腾讯地图API获取客户的当前位置(城市,经纬度)
- ThinkPHP发布安全更新版本(V6.1.0/V6.0.14),移除对think-filesystem库的依赖
- ThinkPHP 6.1.2 版本发布,兼容 PHP8.2以及对ThinkORM3.0 版本的支持
- 微信小程序如何跳转到另一个小程序的实现方法
- 移动端网页开发,viewport的深入理解和使用