相思资源网 Design By www.200059.com

实例如下所示:

$ids = [5,7,3,1,2];
$data = Content::whereIn('id',$ids)
    ->select('id')
    ->get();
//查询结果是想按照wherein的顺序排序
//正确写法
$data = Content::whereIn('id',$ids)
    ->select('id')
//   ->orderBy(\DB::raw('FIND_IN_SET(id, "' . implode(",", $ids) . '"' . ")"))
//   ->orderBy(DB::raw("FIND_IN_SET(id, '" . implode(',', $ids) . "'" . ')'))
//   ->orderByRaw("FIND_IN_SET(id, '" . implode(',', $ids) . "'" . ')')
    ->orderBy(\DB::raw('FIND_IN_SET(id, "' . implode(",", $ids) . '"' . ")"))
    ->get();

中午没睡觉一直调试,心塞...

错误写法

//错误写法
$data = Content::whereIn('id',$ids)
    ->select('id')
    ->orderByRaw("FIND_IN_SET('id', "' . implode(",", $ids) . '"' . ")")
    ->get();
//该写法查询顺序是按照id大小正序排序

原因解析

//正确写法的sql语句为
select `id` from `contents`
order by FIND_IN_SET(id, "5,6,7,4,2,1") asc
//错误写法的sql语句为
select `id` from `contents`
order by 'FIND_IN_SET(id, "5,6,7,4,2,1")' asc
//或者
select `id` from `contents`
order by `FIND_IN_SET(id, "5,6,7,4,2,1")` asc
 
//FIND_IN_SET()方法外面不要添加任何符号

以上这篇laravel 模型查询按照whereIn排序的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

标签:
laravel,模型查询,whereIn,排序

相思资源网 Design By www.200059.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
相思资源网 Design By www.200059.com

评论“laravel 模型查询按照whereIn排序的示例”

暂无laravel 模型查询按照whereIn排序的示例的评论...

稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!

昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。

这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。

而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?