Как я могу получить возвращаемое значение части Laravel?

Вот упрощённый пример, который не работает для меня. Как (используя этот метод, я знаю, что есть лучшие способы, если я действительно хочу получить этот конкретный результат), могу ли я получить общее количество пользователей?

User::chunk(200, function($users) { return count($users); }); 

Это возвращает NULL. Любая идея, как я могу получить возвращаемое значение из функции chunk?

Редактировать:

Здесь может быть лучший пример:

 $processed_users = DB::table('users')->chunk(200, function($users) { // Do something with this batch of users. Now I'd like to keep track of how many I processed. Perhaps this is a background command that runs on a scheduled task. $processed_users = count($users); return $processed_users; }); echo $processed_users; // returns null 

Я не думаю, что вы можете достичь того, чего хотите. Анонимная функция вызывается методом chunk, поэтому все, что вы возвращаете после закрытия, поглощается chunk . Так как chunk потенциально вызывает эту анонимную функцию N раз, нет смысла возвращать что-либо обратно из замыканий, которые она вызывает.

Однако вы можете предоставить доступ к переменной с областью действия к закрытию и позволить закрытию записывать это значение, что позволит вам косвенно возвращать результаты. Вы делаете это с use ключевого слова 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