Laravel 收集顺序类似于 DB FIELD
Laravel collection order similar to DB FIELD
我有一个订单查询
$query->orderByRaw("FIELD(type, 'red', 'green', 'aqua') ASC");
这将不按字母顺序排列项目,而是特别按价值排列。
有没有办法在 Laravel
集合中做同样的事情?
喜欢:
$collection = collect(`Items from DB`);
$final = $collection->sortBy(function($item){
return $item->color == 'red'
});
找到解决方案:
$collection = collect(`Items from DB`);
$final = $collection->sortBy(function($model){
return array_search($model->color, ['red', 'green', 'aqua']);
});
array_search return 项目位置(键),所以如果模型颜色是 red
键是 0 等等。这将订购它。
如果有其他解决方案(可能更快)请post他们,谢谢。
我有一个订单查询
$query->orderByRaw("FIELD(type, 'red', 'green', 'aqua') ASC");
这将不按字母顺序排列项目,而是特别按价值排列。
有没有办法在 Laravel
集合中做同样的事情?
喜欢:
$collection = collect(`Items from DB`);
$final = $collection->sortBy(function($item){
return $item->color == 'red'
});
找到解决方案:
$collection = collect(`Items from DB`);
$final = $collection->sortBy(function($model){
return array_search($model->color, ['red', 'green', 'aqua']);
});
array_search return 项目位置(键),所以如果模型颜色是 red
键是 0 等等。这将订购它。
如果有其他解决方案(可能更快)请post他们,谢谢。