2017-11-08 9 views
0

私はarrayとして応答するか、一見無作為にobjectとして応答するかのどちらかに切り替えるコレクションがあります。それが起こる原因は何ですか?Laravelコレクションが矛盾した結果を返す

$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

答えて

0

は、元のキーを維持しようとするので、私は、元のキーを破棄するために必要な:

return array_values($events->toArray()); 
0

、私はできたのかわからないですsortBy()メソッドがコレクションを返すと宣言するときに、それが起こるようにします。その正確な$イベントをあなたのブレードに戻しますか?そうであれば、ブラウザに戻ってくるコレクションをどのように処理するかを決めるブラウザに矛盾が生じる可能性があります。クエリの終わりに常に - > toArray()を使用して常に配列を返すことができます。そうでない場合は - > toJson()を使用します。結果を頼る

+0

はい、私はあるにして返します。変形は起こっていない。私は 'toArray()'を試しましたが、動作を修正しません。場合によっては配列であることもあります。 'toJson()'も同じです。 – Donnie

+0

また、さまざまなブラウザとPaw(REST APIツール)でリクエスト/レスポンスをテストしました。そのレスポンスはサーバーの障害のようです。 – Donnie

+0

これは興味深いものです。 toArray()がエラーをスローしない場合は、コレクションインスタンスでなければならず、json文字列に変形できる必要があります。コレクションクラスを調べると、jsonSerialize()メソッドもあります。このメソッドは、オブジェクトをJSONシリアライズ可能なものに変換します。それが助けになるのではないかと思う。 –

関連する問題