Php Laravel集合顺序类似于DB字段
我有一个顺序如下的问题Php Laravel集合顺序类似于DB字段,php,laravel,laravel-5,eloquent,laravel-collection,Php,Laravel,Laravel 5,Eloquent,Laravel Collection,我有一个顺序如下的问题 $query->orderByRaw(“字段(类型,'red','green','aqua')ASC”) 这将不按字母顺序排列项目,而是具体按值排序 在Laravelcollection中是否有同样的方法 比如: 找到了一个解决方案: $collection = collect(`Items from DB`); $final = $collection->sortBy(function($model){ return array_search($mode
$query->orderByRaw(“字段(类型,'red','green','aqua')ASC”)代码>
这将不按字母顺序排列项目,而是具体按值排序
在Laravel
collection中是否有同样的方法
比如:
找到了一个解决方案:
$collection = collect(`Items from DB`);
$final = $collection->sortBy(function($model){
return array_search($model->color, ['red', 'green', 'aqua']);
});
返回项目位置(键),因此如果型号颜色为红色,则键为0,依此类推。这是我要的
如果有其他解决方案(可能更快),请发布,谢谢。您不能在查询中对收集使用orderByRaw
。@Rits我知道我不能对收集使用orderByRaw
,我正在寻找一种解决方案,使用集合sortBy
函数,该函数具有与orderByRaw
相同的逻辑,而不是array\u search
,您可以创建数组['red'=>1,'green'=>2]
,然后返回$array[$model->color]
。这将比每次执行array\u search
更快。
$collection = collect(`Items from DB`);
$final = $collection->sortBy(function($model){
return array_search($model->color, ['red', 'green', 'aqua']);
});