Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
При возврате всех записей таблицы при помощи 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: есть курсоров, то ли это, что мне требуется ?
Спасибо заранее!
Не в сети
для выборок по частям есть Model::chunk и Model::chunkById – они работают чуть по разному, но суть в том что они скармливают колбэку все записи блоками по $count штук. если нужно обойти все записи, есть ещё Model::each – оно использует Model::chunk под капотом, но вызывает колбэк не на группы записи а по одной на каждую. регулируя $count можно управлять расходом памяти и количеством запросов в базу чтобы найти наиболее эффективный режим работы. соответственно можно получаемые данные отправлять сразу на клиента «потоком» без необходимости держать их все в памяти одновременно
Не в сети
Не в сети
Model::all()->map(function($i) { return array_values($i->toArray()); })
Изменено AlexeyMezenin (19.04.2017 20:49:09)
Не в сети
Страницы 1