Laravel - 已排序的集合输出不是数组

2022-08-30 21:49:40

我正在尝试按列对集合进行排序。我正在记录ajax结果,当我排序时,我得到:namename

Object: {0: Object, 1: Object, ...}

但是当我按另一个字段()排序时,我得到:locationId

[Object, Object, ...]

知道我做错了什么吗?我需要一个数组中的结果,就像我按 排序时一样。locationId

public function getLocations()
{
    return \Location::all(['locationId', 'name'])->sortBy('name');
}

答案 1

排序依据 时,项目的键不会更改,因为项目已经以这种方式排序了。例如,键将保持 0、1、2 等,这是一个有效的索引数组。locationId

但是,当您按字段排序时,键将随着它们引用的项而移动。因此,您的密钥可能最终为0,2,1等。由于此键顺序不是有效的索引数组,因此将其视为关联数组,该数组在 json 中转换为对象。name

您只需要在排序后重新键入项目数组。集合有一个方法来执行此操作。values()

public function getLocations()
{
    return \Location::all(['locationId', 'name'])->sortBy('name')->values();
}

答案 2

如果要删除数字键,则应使用:

return \Location::all(['locationId', 'name'])->sortBy('name')->values()->all();

引用 - 排序依据


推荐