我有一组ID,如下所示:
array:2 [
0 => "102"
1 => "101"
]
请注意,订单很重要。
当我查询模型时:
$models = Post::whereIn('id', $keys)->get();
它失去了订单。
所以我希望id 102的帖子在101之前出现,但101先出现。
如何强制查询构建器保持订单
答案 0 :(得分:0)
使用orderBy()
列
id
方法
$models = Post::whereIn('id', $keys)->orderBy('id', 'ASC')->get();
答案 1 :(得分:0)
您可以这样做:
$ids_ordered = implode(',', $keys);
$models = Post::whereIn('id', $keys)
->orderByRaw(DB::raw("FIELD(id, $ids_ordered)"))
->get();
参考FIELD()