Maison >développement back-end >tutoriel php >Générer des collections séquentielles de laravel
Lorsque vous devez créer une collection avec un nombre spécifique d'éléments calculés, la méthode Times de Laravel fournit une solution élégante. Cette méthode est particulièrement utile pour générer des séquences, des créneaux horaires, des liens de pagination ou tout scénario nécessitant des itérations numérotées.
<!-- Syntax highlighted by torchlight.dev -->// Generate multiplication table of 5 $fives = Collection::times(10, function ($number) { return $number * 5; }); // [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
Explorons un exemple pratique d'un planificateur de réunion qui génère des plages horaires disponibles:
<!-- Syntax highlighted by torchlight.dev --><?php namespace App\Services; use Carbon\Carbon; use Illuminate\Support\Collection; class MeetingScheduler { public function generateTimeSlots(Carbon $date, array $config = []): Collection { $startTime = $config['start_time'] ?? '09:00'; $endTime = $config['end_time'] ?? '17:00'; $duration = $config['duration'] ?? 30; $slots = $this->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; } }
La méthode du Times simplifie le processus de génération de données séquentielles, fournissant un moyen propre et efficace de créer des collections avec des valeurs calculées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!