Laravel在查询时失去了秩序

时间:2016-10-25 19:51:24

标签: laravel

我有一组ID,如下所示:

array:2 [
  0 => "102"
  1 => "101"
]

请注意,订单很重要。

当我查询模型时:

$models = Post::whereIn('id', $keys)->get();
它失去了订单。

所以我希望id 102的帖子在101之前出现,但101先出现。

如何强制查询构建器保持订单

2 个答案:

答案 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()