按asc或desc以外的自定义顺序对Laravel Collection进行排序

dwix

我有这个数组作为Laravel Collection:

"data": [
  {
    "id": 863368,
    "reference": "Ref 1",
    "status": 1
  },
  {
    "id": 863391,
    "reference": "Ref 2",
    "status": 2
  },
  {
    "id": 863390,
    "reference": "Ref 3",
    "status": 2
  },
  {
    "id": 863396,
    "reference": "Ref 4",
    "status": 3
  }
];

我需要按status而不是按asc对其进行排序desc,但是具有状态的记录2应首先在列表中,然后是状态,1然后是状态3

我不知道如何实现这一目标,在此先感谢您。

Froxz

嗨,有类似的问题,

$final = $collection->sortBy(function($item){
    return array_search($item->status, ['2', '1', '3']);
});

['2', '1', '3'] (状态为2的状态为第一个,因为他的位置键为0,只需根据需要更改顺序即可。

或者您可以创建一个array喜欢['2' => 1, '1' => 2, '3' => 3]

使用return $arry_of_order[$item->status];(更快,然后array_search每次调用

PS:如果您可以使用DB(MySql)(如此处的其他人所建议的那样),则应坚持使用它, $query->orderByRaw("FIELD(status, '2', '1', '3')")

对于PostgreSQL,请看这里

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java:按自定义顺序对Collection <Class>进行排序

按自定义分类和自定义字段ASC对帖子进行排序

按自定义顺序对列表进行排序

按给定的自定义顺序对列表进行排序

按自定义顺序对 RealmResult 进行排序

按特定顺序对自定义对象进行排序

在Eloquent中按自定义顺序对集合进行排序

如何按自定义顺序对值进行排序

按自定义顺序对对象数组进行排序

按自定义顺序对php数组进行排序

Linq在ORDER BY中进行自定义排序,其余结果按asc排序

以自定义顺序对 Arraylist 进行排序

使用laravel collection对月份进行排序

按内容对div asc desc进行排序

按属性对对象列表进行排序 C#(自定义排序顺序)

按从 Enum 获取的值按自定义顺序对 List<Object> 进行排序

ggpubr:按组排序但排序顺序不同(asc,desc)

按自定义顺序按枚举排序对象

如何使用自定义顺序按两列对DataFrame进行排序?

如何按自定义顺序对T-SQL查询输出进行排序?

如何按自定义顺序对易碎物品信息进行排序?

uasort性能差,按自定义顺序对对象数组进行排序

按自定义列表顺序对数据表进行排序

在实体框架中按自定义顺序对VARCHAR字段进行排序

在自定义foreach循环中按字母顺序对结果进行排序

如何按自定义顺序对 List<IGrouping<string, XElement>> 进行排序?

如何在Java数组中按字母顺序对自定义对象进行排序?

如何使用 lodash 的 _sortBy() 根据自定义要求按字母顺序对这个列表进行排序?

按指定自定义顺序的列对熊猫数据框进行排序