当您第一次收到事件时,您的Collection
看起来像这样:
[
0 => Event1,
1 => Event2,
2 => Event3
]
这是一个正确索引的数值数组,可以表示为 JSON 中的数组。然而,一旦你得到你的Collection
,你打电话给sortBy()
对它进行排序Collection
。此排序会重新排列数组内项目的键和值。此时,您的Collection
可能看起来像:
[
1 => Event2,
0 => Event1,
2 => Event3
]
这不是一个正确索引的数值数组,并且不能表示为 JSON 中的数组。该数组必须表示为一个对象,这就是您所看到的。
为了获得您期望的结果,您需要重新输入项目Collection
排序后。您可以使用values()
方法上的Collection
(这只是调用array_values()
在内部项目数组上)。
一旦你重新设置你的收藏集的密钥,它将看起来像:
[
0 => Event2,
1 => Event1,
2 => Event3
]
现在这是一个正确索引的数字数组,可以表示为 JSON 中的数组。
所以,你的代码应该类似于:
$results = \App\Event::with('sandboxes')
->get()
->sortBy('start_time')
->values() // re-key the items in the collection after sorting
->forPage($pageNum, $perPage);