Laravel 5.2获取与whereIn()中相同排序的记录

Val*_*ers 3 php laravel eloquent laravel-5.2

我有这个带有记录ID的数组:

$record_ids = [60, 66, 70, 64, 69, 67, 65, 57];
Run Code Online (Sandbox Code Playgroud)

我通过使用模型来获取行,如下所示:

$result = Model::whereIn('id', $record_ids)->get();
Run Code Online (Sandbox Code Playgroud)

问题 - 我想获得与$ record_ids数组中的行相同的顺序.Laravel以递增的ID顺序返回这些行,如下所示:

[57, 60, 64, 65, 66, 67, 69, 70]
Run Code Online (Sandbox Code Playgroud)

怎么做?如何使Laravel"默认不通过ID ASC订购"?谢谢.

Nar*_*dia 8

你可以orderByRaw()像使用一样

$result = Model::whereIn('id', $record_ids)
          ->orderByRaw("field(id,".implode(',',$record_ids).")")
          ->get();
Run Code Online (Sandbox Code Playgroud)

  • 你有 Postgres 兼容版本吗? (2认同)