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!

Generar colecciones sobre la marcha con el método times de Laravel

#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

Antonio Jenaro

Web Developer

Archivado en:

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