我不知道是什么原因引起的,但是下面是使用所需JSON格式生成的原始PHP代码:
PHP
return response()->json($model->things, 200);
JSON
[
{...},
{...},
...
]
但是,当我对集合进行排序时,JSON中的数组变成了一个对象。
PHP
return response()->json($model->things->sortBy("name"), 200);
JSON
{
"0": {...},
"1": {...},
...
}
我做错了吗?我尝试在这两种情况下dd
对集合进行处理,但结果对我来说都是相同的。
答案 0 :(得分:5)
从laravel文档中:
sortBy方法按给定键对集合进行排序。排序后的集合保留原始数组键
因此在sortBy()之后,您将得到以下内容:
[2=>'val1', 1 => 'val2', 0 => 'val3']
它是关联数组,这解释了为什么在json中它成为对象,并且要防止这种情况,您需要使用values()方法,如下所示:
$model->things->sortBy("name")->values()->all()
第二个问题是为什么它没有排序,因此您可以阅读以下问题:json_encode not preserving order