laravel 模型查询按照whereIn排序的示例

实例如下所示:

$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排序的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持免费资源网。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容