3

我有以下订单的查询

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

这将不按字母顺序排列项目,而是按值排序。

有没有办法在Laravel收藏中做同样的事情?

像:

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

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

1 回答 1

1

找到了解决方案:

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

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

array_search返回项目位置(键),所以如果模型颜色是red键是 0 等等。这将订购它。

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

于 2017-11-01T07:47:44.103 回答