簡體   English   中英

Laravel集合返回不一致的結果

[英]Laravel Collection Returns Inconsistant Results

我有一個集合,它將在似乎隨機響應作為arrayobject之間進行切換。 什么會導致這種情況發生?

$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM