我正在尝试按列name
对系列进行排序。我正在记录ajax结果,当我按name
排序时,我得到:
Object: {0: Object, 1: Object, ...}
但是当我按其他字段(locationId
)排序时,我得到:
[Object, Object, ...]
知道我做错了什么吗?我需要数组中的结果,就像我按locationId
排序时一样。
public function getLocations()
{
return \Location::all(['locationId', 'name'])->sortBy('name');
}
答案 0 :(得分:19)
按locationId
排序时,项目的键不会更改,因为项目已按此方式排序。例如,键将保留0,1,2等,这是一个有效的索引数组。
但是,当您按name
字段排序时,键会随其引用的项目移动。所以,你的键最终可能会像0,2,1等一样。由于这个键的顺序不是一个有效的索引数组,它被视为一个关联数组,它被转换为json中的一个对象。
您只需在排序后重新生成items数组。该集合有一个values()
方法来执行此操作。
public function getLocations()
{
return \Location::all(['locationId', 'name'])->sortBy('name')->values();
}
答案 1 :(得分:1)
如果你想摆脱数字键,你应该使用:
return \Location::all(['locationId', 'name'])->sortBy('name')->values()->all();