#php #laravel
Вопрос:
Я работаю с приложением Laravel 8 и пытаюсь разделить большой набор данных, чтобы уменьшить использование памяти, однако, когда я разделяю свои результаты и выводю свои данные, я получаю пустой массив.
$someHistory = [];
$history = DB::table('data_profiler_agents')
->whereDate('created_at', '>=', Carbon::now()->subDays(30))
->whereDate('created_at', '<=', Carbon::now())
->orderBy('created_at', 'desc')
->chunk(1000, function ($agents) use ($someHistory) {
array_push($someHistory, $agents->toArray());
});
Чего мне не хватает?
Мне просто нужно сначала вернуть все мои данные в том же формате ->get()
, что и ожидаемый фрагмент.
Я действительно пытался:
$someHistory = $history->flatten();
и
$someHistory = collect($history);
Ни то, ни другое, казалось, не работало на меня.
Ответ №1:
Попробуйте передать $someHistory
переменную по ссылке на ваш метод фрагмента. amp;$someHistory
$history = DB::table('data_profiler_agents')
->whereDate('created_at', '>=', Carbon::now()->subDays(30))
->whereDate('created_at', '<=', Carbon::now())
->orderBy('created_at', 'desc')
->chunk(1000, function ($agents) use (amp;$someHistory) {
array_push($someHistory, $agents->toArray());
});
Комментарии:
1. Это решило проблему! Спасибо за это, я знал, что это было относительно просто