我有一个查询,顺序如下
$query->orderByRaw("FIELD(type, 'red', 'green', 'aqua') ASC");
这将不按字母顺序排列项目,而是按值(value)排序。
有没有办法在 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返回项目位置(键),因此如果模型颜色为 red
,则键为 0,依此类推。这将订购它。
如果有其他解决方案(可能更快)请发布,谢谢。
关于php - 类似于 DB FIELD 的 Laravel 集合顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47049954/