Laravel сгруппированная коллекция возвращает объект вместо массива - PullRequest
0 голосов
/ 28 июня 2018

У меня есть следующий запрос

$outings = Outing::all()->groupBy(function ($item) {
   return Carbon::parse($item['start'])->format('m/d/Y');
});

return response()->json([
    'outings' => $outings
], 200);

Ответ возвращает объект, и мне нужно, чтобы он возвратил массив As you can see, outings is an object and not an array

Как я могу получить в виде массива вместо объекта.

Если я не сгруппирую коллекцию и просто сделаю

Outing::all();

Он вернет массив, а не объект. Группа делает что-то странное.

Если я DD ($ outings), он действительно возвращает коллекцию, поэтому я думаю, что странно, что он приводится к объекту при возврате в браузер, а не в массив.

Ниже выводится, когда I DD ($ outings-> toArray ())

enter image description here

Спасибо

Ответы [ 3 ]

0 голосов
/ 28 июня 2018
$outings = Outing::all()->groupBy(function ($item) {
   return Carbon::parse($item['start'])->format('m/d/Y');
})->toArray();

return response()->json([
    'outings' => $outings
], 200);

Посмотрите на toArray ()

Также попробуйте

$outings = Outing::all()->groupBy(function ($item) {
   return Carbon::parse($item['start'])->format('m/d/Y');
})->toArray();

return response()->json([
    'outings' => json_encode($outings)
], 200);
0 голосов
/ 28 июня 2018

Если вы хотите массив, используйте это

$outings = Outing::all()->groupBy(function ($item) {
   return Carbon::parse($item['start'])->format('m/d/Y');
})->map(function($item){
    return $item->all();
});

return response()->json($outings, 200);

Если вы хотите указать дату в качестве ключа,

$outings = Outing::all()->groupBy(function ($item) {
   return Carbon::parse($item['start'])->format('m/d/Y');
});

return response()->json($outings->toArray(), 200);
0 голосов
/ 28 июня 2018

Попробуйте сделать:

$outings = Outing::all()->groupBy(function ($item) {
   return Carbon::parse($item['start'])->format('m/d/Y');
});

return response()->json([
    'outings' => $outings->toArray()
], 200);
...