Generating Sequential Laravel Collections

When you need to create a collection with a specific number of calculated elements, Laravel's times method provides an elegant solution. This method is particularly useful for generating sequences, time slots, pagination links, or any scenario requiring numbered iterations. // Generate multiplication table of 5 $fives = Collection::times(10, function ($number) { return $number * 5; }); // [5, 10, 15, 20, 25, 30, 35, 40, 45, 50] Let's explore a practical example of a meeting scheduler that generates available time slots:

Generating Sequential Laravel Collections

ARE YOU TIRED OF LOW SALES TODAY?

Connect to more customers on doacWeb

Post your business here..... from NGN1,000

WhatsApp: 09031633831

ARE YOU TIRED OF LOW SALES TODAY?

Connect to more customers on doacWeb

Post your business here..... from NGN1,000

WhatsApp: 09031633831

ARE YOU TIRED OF LOW SALES TODAY?

Connect to more customers on doacWeb

Post your business here..... from NGN1,000

WhatsApp: 09031633831

Generating Sequential Laravel Collections

When you need to create a collection with a specific number of calculated elements, Laravel's times method provides an elegant solution. This method is particularly useful for generating sequences, time slots, pagination links, or any scenario requiring numbered iterations.

// Generate multiplication table of 5
$fives = Collection::times(10, function ($number) {
    return $number * 5;
});
// [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]

Let's explore a practical example of a meeting scheduler that generates available time slots:

calculateSlotCount($startTime, $endTime, $duration);
        return Collection::times($slots, function ($slot) use ($date, $startTime, $duration) {
            $start = Carbon::parse($date->format('Y-m-d') . ' ' . $startTime)
                ->addMinutes(($slot - 1) * $duration);
                
            $end = $start->copy()->addMinutes($duration);
            return [
                'id' => $slot,
                'start_time' => $start->format('H:i'),
                'end_time' => $end->format('H:i'),
                'formatted' => sprintf(
                    '%s - %s',
                    $start->format('g:i A'),
                    $end->format('g:i A')
                ),
                'is_available' => !$this->isSlotBooked($start, $end)
            ];
        });
    }

    private function calculateSlotCount($start, $end, $duration): int
    {
        $startMinutes = Carbon::parse($start)->diffInMinutes(Carbon::parse($end));
        return (int) floor($startMinutes / $duration);
    }

    private function isSlotBooked(Carbon $start, Carbon $end): bool
    {
        // Check against existing bookings
        return false;
    }
}

The times method simplifies the process of generating sequential data, providing a clean and efficient way to create collections with calculated values.


The post Generating Sequential Laravel Collections appeared first on Laravel News.

Join the Laravel Newsletter to get all the latest Laravel articles like this directly in your inbox.

What's Your Reaction?

like

dislike

love

funny

angry

sad

wow