Laravel集合订单类似于DB FIELD

时间:2017-11-01 07:16:23

标签: php laravel laravel-5 eloquent laravel-collection

我有一个按以下顺序查询

$query->orderByRaw("FIELD(type, 'red', 'green', 'aqua') ASC");

这将按字母顺序排列项目,但具体取决于值。

有没有办法在Laravel集合中做同样的事情?

像:

$collection = collect(`Items from DB`);

$final = $collection->sortBy(function($item){
    return $item->color == 'red'
});

1 个答案:

答案 0 :(得分:1)

找到解决方案:

$collection = collect(`Items from DB`);

$final = $collection->sortBy(function($model){
    return array_search($model->color, ['red', 'green', 'aqua']);
});

array_search返回项目位置(键),因此如果模型颜色为red,则键为0,依此类推。这将命令它。

如果有其他解决方案(可能更快),请发布它们,谢谢。