Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 18.04.2017 19:44:26

Получение записи БД как массив а не объект

При возврате всех записей таблицы при помощи Model::all();  приходит ответ как массив экземпляров конструтора модели (объектов), с именованными свойствами.
[{a:'a',b:'b','c:'c'},{a:'d',b:'e','c:'f'},{a:'g',b:'h','c:'k'},{a:'l',b:'m','c:'n'}]
Когда речь идёт о тысячах строк, которые я отправляю в JSON на клиент, то ответ идёт достаточно долго, и нет смысла занимать память повторяющимися именами столбцов таблицы.
[[a;b;c],[d;e;f],[g;h;k],[l;m;c],]
Сервер стоит на raspberry, поэтому особой скоростью работы он не отличается, и не хотелось бы пробегать весь массив для выуживания значений, поэтому меня интересует есть ли что нить предусмотренное во фреймворке или в Eloquent ? не могу что то найти.
PS: есть курсоров, то ли это, что мне требуется ?
Спасибо заранее!

Не в сети

#2 19.04.2017 06:17:52

Re: Получение записи БД как массив а не объект

для выборок по частям есть Model::chunk и Model::chunkById – они работают чуть по разному, но суть в том что они скармливают колбэку все записи блоками по $count штук. если нужно обойти все записи, есть ещё Model::each – оно использует Model::chunk под капотом, но вызывает колбэк не на группы записи а по одной на каждую. регулируя $count можно управлять расходом памяти и количеством запросов в базу чтобы найти наиболее эффективный режим работы. соответственно можно получаемые данные отправлять сразу на клиента «потоком» без необходимости держать их все в памяти одновременно

Не в сети

#3 19.04.2017 06:57:27

Re: Получение записи БД как массив а не объект

Делать выборку через DB и отправлять результат в клиент

Не в сети

#4 19.04.2017 20:48:47

Re: Получение записи БД как массив а не объект

Model::all()->map(function($i) { return array_values($i->toArray()); })

Изменено AlexeyMezenin (19.04.2017 20:49:09)

Не в сети

Подвал раздела