我不知道是什么导致了这个问题,但下面是原始的 PHP 代码,它产生了想要的 JSON 格式:
PHP
return response()->json($model->things, 200);
JSON
[
{...},
{...},
...
]
但是,当我对集合进行排序时,JSON中的数组变成了一个对象。
PHP
return response()->json($model->things->sortBy("name"), 200);
JSON
{
"0": {...},
"1": {...},
...
}
我做错了什么吗?我在这两种情况下尝试了 dd
ing 集合,但结果对我来说是一样的。
最佳答案
来自 laravel 文档:
The sortBy method sorts the collection by the given key. The sorted collection keeps the original array keys
所以在 sortBy() 之后你有这样的东西:
[2=>'val1', 1 => 'val2', 0 => 'val3']
它是关联数组,这解释了为什么在 json 中它变成了一个对象,为了防止这种情况,您需要像这样使用 values() 方法:
$model->things->sortBy("name")->values()->all()
第二个问题是为什么没有排序,可以看这个问题:json_encode not preserving order
关于php - Laravel - 排序后从集合中响应 JSON 将项目索引作为对象键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51313060/