Cómo organizar colecciones con el método splitIn de Laravel
- Publicado el 20 diciembre, 2024
- Palabras: 84
¿Necesitas dividir tu colección en grupos de igual tamaño? ¡El nuevo método splitIn de Laravel lo hace muy fácil! Exploremos cómo este método práctico te ayuda a organizar tus datos.
#Uso básico
El método splitIn divide una colección en la cantidad dada de grupos, llenando completamente los grupos no terminales antes de asignar el resto al grupo final. Así de sencillo es:
$collection = collect([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
$groups = $collection->splitIn(3);
$groups->all();
// [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]]
#Ejemplo práctico
A continuación se explica cómo podría usarlo en un sistema de distribución de tareas:
class TaskDistributor
{
public function distributeToTeams(Collection $tasks, int $teamCount)
{
$distributedTasks = $tasks->splitIn($teamCount);
return $distributedTasks->map(function ($teamTasks, $index) {
return [
'team_number' => $index + 1,
'task_count' => count($teamTasks),
'tasks' => $teamTasks->map(fn($task) => [
'id' => $task->id,
'priority' => $task->priority,
'deadline' => $task->deadline->format('Y-m-d')
])
];
});
}
}
// Usage
$tasks = Task::where('status', 'pending')->get();
$distributor = new TaskDistributor();
$teamAssignments = $distributor->distributeToTeams($tasks, 3);
foreach ($teamAssignments as $assignment) {
$this->info("Team {$assignment['team_number']} received " .
"{$assignment['task_count']} tasks");
}
El método splitIn garantiza que los grupos se llenen de manera uniforme y que el resto se destine al último grupo. Es perfecto para distribuir cargas de trabajo, paginar contenido o cualquier situación en la que necesite grupos equilibrados.
Antonio Jenaro
Web Developer
Fuente: Harris Raftopoulos
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión