У меня есть этот код
$list = Elements::where('list_id', $id)->with('visitors')->get()->sortBy(function($t)
{
return $t->visitors->count();
});
return json_encode($list);
Этот код возвращает объект, а не массив. Как я могу это изменить?
3 ответа
Вы должны добавить ->values()
, если вы хотите получить фактический массив JSON в конце.
Поскольку вы могли бы добавить другие манипуляции, такие как фильтры и преобразования, я бы вызвал ->values()
в самый последний момент:
return json_encode($list->values());
Причина использования ->values()
поверх других опций заключается в том, что он сбрасывает ключи массива. Если вы попытаетесь вернуть некоторый ассоциативный массив (например, ['name' => 'Roman']
или даже [1 => 'item', 0 => 'other']
), он всегда будет закодирован как объект. Вам нужно иметь простой массив (с последовательными целочисленными ключами, начинающимися с 0), чтобы избежать непредвиденных ситуаций, которые будут делать фильтрация и сортировка.
$list = Elements::where('list_id', $id)->with('visitors')->get();;
Этот код возвращает коллекционный экземпляр. $collection->sortBy(...);
также является экземпляром Collection. Для получения массива в Collection вы должны использовать либо ->toArray()
, либо ->all()
В вашем случае вы можете использовать
$list = Elements::where('list_id', $id)->with('visitors')->get()->sortBy(function($t) {
return $t->visitors->count();
})->all();
Вам просто нужно вызвать метод ->all()
Collection, поэтому
$list = Elements::where('list_id', $id)->with('visitors')->get()->sortBy(function($t)
{
return $t->visitors->count();
}
)->all();
это отличается от метода ->toArray()
, потому что он также приводит к массиву также объект внутри коллекции, и не только саму коллекцию (фактически ->all()
ничего не будет приводить, он просто вернет элементы внутри Коллекция)
Похожие вопросы
Новые вопросы
php
PHP - это широко используемый высокоуровневый, динамический, объектно-ориентированный и интерпретируемый язык сценариев, в первую очередь предназначенный для серверной веб-разработки. Используется для вопросов о языке PHP.