iNickolay
@iNickolay

Как Laravel возвращает несколько объектов за запрос?

Здравствуйте!
Делаю запрос к простейшему АПИ, которое должно вернуть три значения.

Если в контроллере используется
return Set::with('items')->get();
Тогда приходят три коллекции, как говорит alert();
[object Object], [object Object], [object Object]


А если я сделаю запрос, где изменю ключи:
return Set::with('items')->get()->mapWithKeys(function ($item) { return [$item->id => $item]; });

Тогда alert(); говорит что вернулся объект с коллекциями:
[object Object]

(т.е. объект, который содержит три коллекции)

Что примечательно, если выводить на странице эти данные с помощью dd() - Визуально данные выглядят и расположены одинаково.

Как так получается? И могу ля и во втором случае вернуть несколько объектов, как это произошло в первом?
  • Вопрос задан
  • 323 просмотра
Пригласить эксперта
Ответы на вопрос 2
hOtRush
@hOtRush
1. Почитать спецификацию JSON
2. Перестать дебажить алертами в 2018 году
[{}, {}, {}]
и
{"0": {}, "1": {}, "2": {}}
разные вещи немного
Ответ написан
@Yan-s
Чего то вы недопонимаете насчет JSON.

Тогда приходят три коллекции, как говорит alert();

Вам приходит 1 массив объектов, в котором 3 объекта. Это не шибко отличается от второй ситуации.

Для понимания почему так посмотрите пример: sandbox.onlinephpfunctions.com/code/342145de51348c...

код примера
$ar = [0 => 0, 1 => 1, 2 => 2];
$ar2 = [1 => 1, 0 => 0, 2 => 2];

var_dump(json_encode($ar));
var_dump(json_encode($ar2));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы