collection macro chunkInto
Collection::macro('chunkInto', function ($slices) {
$slices = max(min($slices, $this->count()), 1);
if ($slices == 1) {
return collect([$this]);
}
$take = round($this->count() / $slices);
return collect([$this->take($take)])
->merge($this->slice($take)->values()->chunkInto($slices - 1));
});