2016-10-25 10 views
0

を照会するとき、次のように私はidのコレクションを持っている順序を失い:Laravelは

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

そのための事項を注意してください。

私はのようなモデルを照会する場合:

$models = Post::whereIn('id', $keys)->get(); 

それは順序を失います。

だから私は、idが102の投稿は101の前に来るが、101が最初に来ると思う。

$ids_ordered = implode(',', $keys); 

$models = Post::whereIn('id', $keys) 
       ->orderByRaw(DB::raw("FIELD(id, $ids_ordered)")) 
       ->get(); 

参考:私は

$models = Post::whereIn('id', $keys)->orderBy('id', 'ASC')->get();

+2

'IN'ステートメント内のIDの順序は、結果の順序を決定しません。これを達成するには、 'orderBy'ステートメントを使う必要があります。 –

+0

例を挙げることはできますか? – Mehrdad

+1

それはあなたの結果を何で注文しようとしているのですか?その場合は、ドキュメント[こちらをご覧ください](https://laravel.com/docs/5.3/queries#ordering-grouping-limit-and-offset)。 –

答えて

0

あなたはこのような何かを行うことができid列に順

0

使用にorderBy()方法を維持するために、クエリビルダを強制するにはどうすればよい

FIELD()