Метод фрагмента Laravel, возвращающий bool вместо данных

#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. Это решило проблему! Спасибо за это, я знал, что это было относительно просто