[英]Laravel Collection Returns Inconsistant Results
我有一個集合,它將在似乎隨機響應作為array
或object
之間進行切換。 什么會導致這種情況發生?
$events = Event::all();
$events = $events->map(function ($event) use ($request) {
$reducedEventName = Helper::alphaNum($event->name);
$reducedRequestName = Helper::alphaNum($request->name);
$distance = levenshtein($reducedEventName, $reducedRequestName);
return [
'name' => $event->name,
'url' => route('event.view', ['slug' => $event->slug]),
'distance' => $distance,
];
})
->filter(function ($event) {
return $event['distance'] <= Helper::threshold($event['name']);
})
->take(3)
->sortBy('distance');
return $events->toArray();
通過XHR調用此方法,因此我需要原始JSON
響應。 有時看起來像這樣(👍):
[{
"name": "Taylor Swift - Reputation - Release",
"url": "http:\/\/localhost\/e\/lgKejoPSg",
"distance": 22
}, {
"name": "Wiz Khalifa \"Laugh now, fly later\"",
"url": "http:\/\/localhost\/e\/DdLnFD3Qf",
"distance": 24
}]
有時看起來像這樣(👎):
{
"1": {
"name": "Wiz Khalifa \"Laugh now, fly later\"",
"url": "http:\/\/localhost\/e\/DdLnFD3Qf",
"distance": 18
},
"0": {
"name": "Taylor Swift - Reputation - Release",
"url": "http:\/\/localhost\/e\/lgKejoPSg",
"distance": 23
}
}
Laravel 5.4
關於您的問題,我不確定在sortBy()方法聲明其返回集合時會導致這種情況發生的原因。 您是否將確切的$ events返回給刀片服務器? 如果是這樣,那可能會導致瀏覽器決定如何處理發送回該集合的集合不一致。 您可以始終在查詢末尾使用-> toArray()來確保它始終返回一個數組,或者如果您不想對其進行任何其他操作,則可以使用-> toJson()。
對結果求助試圖保留原始密鑰,因此我需要丟棄原始密鑰:
return array_values($events->toArray());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.