dwi*_*wix 1 php laravel laravel-5
我有这个数组作为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
}
];
Run Code Online (Sandbox Code Playgroud)
我需要按status而不是按asc或对其进行排序desc,但是具有状态的记录2应首先在列表上,然后是状态,1然后是状态3。
我不知道如何实现这一目标,在此先感谢您。
嗨,有类似的问题,
$final = $collection->sortBy(function($item){
return array_search($item->status, ['2', '1', '3']);
});
Run Code Online (Sandbox Code Playgroud)
['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,请看这里
| 归档时间: |
|
| 查看次数: |
263 次 |
| 最近记录: |