一尘不染

Laravel:在哪里排序

mysql

我正在使用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以适当的方式做到这一点?


阅读 221

收藏
2020-05-17

共1个答案

一尘不染

使用http://laravelsnippets.com/snippets/get-all-items-at-once-ordered-by-the-
current-order-of-ids-in-the-where-in-clause-
using中找到的解决方案-雄辩

$ids = array(1,17,2);

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

$items = static::whereIn('id', $ids)
 ->orderByRaw("FIELD(id, $ids_ordered)")
 ->get();
2020-05-17