SphinxSearchを使用して一部のコンテンツをクエリし、MySQLでクエリするオブジェクトのIDを取得しています。私のIDの配列は、Sphinxが与えるランクに応じてソートされます。したがって、MySQLを次のように作成します。
SELECT * FROM table WHERE id IN (1,17,2)
ORDER BY FIELD(id,1,17,2)
私はできることを知っています:
Table::whereIn('id', $ids)->get();
しかし、注文したものを手に入れることができません。
Laravelで適切な方法でそれを行うにはどうすればよいですか?
$ids = array(1,17,2);
$ids_ordered = implode(',', $ids);
$items = static::whereIn('id', $ids)
->orderByRaw(DB::raw("FIELD(id, $ids_ordered)"))
->get();
この問題も発生しましたが、対象の配列要素は文字列でした。この場合 ...
$strings = array('xxx','yyy','zzz');
$imploded_strings = implode("','", $strings);
$items = static::whereIn('some_column', $strings)
->orderByRaw(DB::raw("FIELD(some_column, '$imploded_strings')"))
->get();