Laravel:按顺序排列

时间:2014-11-02 21:23:57

标签: php mysql laravel sphinx

我正在使用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合作?

3 个答案:

答案 0 :(得分:53)

使用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(',', $ids);

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

答案 1 :(得分:0)

我也遇到了这个问题,但是我的目标数组元素是字符串。在这种情况下...

.tablewrapper thead {
  display: block;
  position: sticky;
  Top:0;
  overflow: visible
}

答案 2 :(得分:0)

$category_id = Category::select('id')->orderby('name','ASC')->get()->pluck('id')->toArray();