Ответ 1
Я не думаю, что вы можете достичь того, чего хотите. Анонимная функция вызывается методом chunk, поэтому все, что вы возвращаете из своего закрытия, проглатывается chunk
. Так как chunk
потенциально вызывает эту анонимную функцию N раз, нет смысла возвращать что-либо обратно из закрытых им замыканий.
Однако вы можете предоставить доступ к переменной с областью действия к закрытию и позволить закрытию записывать это значение, что позволит вам косвенно возвращать результаты. Вы делаете это с помощью ключевого слова use
и не забудьте передать переменную с областью действия по ссылке, что достигается с помощью модификатора &
.
Это будет работать, например:
$count = 0;
DB::table('users')->chunk(200, function($users) use (&$count)
{
Log::debug(count($users)); // will log the current iterations count
$count = $count + count($users); // will write the total count to our method var
});
Log::debug($count); // will log the total count of records