Generar colecciones sobre la marcha con el método times de Laravel
- Publicado el 23 diciembre, 2024
- Palabras: 60
¿Necesitas crear una colección con valores calculados? ¡El método times de Laravel te permite generar colecciones de forma dinámica!
#Uso básico
El método estático times crea una nueva colección invocando el clousure dado una cantidad específica de veces. Veamos su uso:
$collection = Collection::times(10, function (int $number) {
return $number * 9;
});
// [9, 18, 27, 36, 45, 54, 63, 72, 81, 90]
#Ejemplo práctico
A continuación te indicamos cómo puedes usarlo en un generador de espacios de fecha:
class AppointmentSlotGenerator
{
public function generateDailySlots(
string $startTime = '09:00',
int $slotCount = 8,
int $intervalMinutes = 60
) {
return Collection::times($slotCount, function (int $index) use ($startTime, $intervalMinutes) {
$time = Carbon::parse($startTime)
->addMinutes(($index) * $intervalMinutes);
return [
'slot_id' => $index + 1,
'start_time' => $time->format('H:i'),
'end_time' => $time->addMinutes($intervalMinutes)->format('H:i'),
'is_available' => true
];
});
}
}
// Usage
$generator = new AppointmentSlotGenerator();
$slots = $generator->generateDailySlots('10:00', 6, 30);
$slots->each(function ($slot) {
$this->info("Slot {$slot['slot_id']}: {$slot['start_time']} - {$slot['end_time']}");
});
El método times es perfecto para generar secuencias, crear datos de prueba o cualquier escenario en el que necesite valores calculados en una colección.
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