Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel集合顺序类似于DB字段_Php_Laravel_Laravel 5_Eloquent_Laravel Collection - Fatal编程技术网

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']);
});