Я использую SphinxSearch для запроса некоторого содержимого и наличия идентификаторов моих объектов, которые я хочу запросить в MySQL. Массив моих идентификаторов сортируется в зависимости от их ранга Sphinx. Таким образом, я хотел бы сделать MySQL следующим:
SELECT * FROM table WHERE id IN (1,17,2) ORDER BY FIELD(id,1,17,2)
Я знаю, что могу сделать:
Table::whereIn('id', $ids)->get();
Но я не могу получить приказ.
Как я могу сделать это с помощью Laravel?
Используя решение, найденное на http://laravelsnippets.com/snippets/get-all-items-at-once-ordered-by-the-current-order-of-ids-in-the-where-in-clause-using -eloquent
$ids = array(1,17,2); $ids_ordered = implode(',', $itemIds); $items = static::whereIn('id', $ids) ->orderByRaw(DB::raw("FIELD(id, $ids_ordered)")) ->get();