ホームページ >バックエンド開発 >PHPチュートリアル >シーケンシャルLaravelコレクションの生成
特定の数の計算要素を使用してコレクションを作成する必要がある場合、Laravel's Timesメソッドはエレガントなソリューションを提供します。この方法は、シーケンス、時間スロット、ページネーションリンク、または番号付きの反復を必要とするシナリオを生成するのに特に役立ちます。
<!-- 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]利用可能な時間スロットを生成する会議スケジューラの実用的な例を探りましょう:
<!-- 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; } }タイムメソッドは、順次データを生成するプロセスを簡素化し、計算値を持つコレクションを作成するためのクリーンで効率的な方法を提供します。
以上がシーケンシャルLaravelコレクションの生成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。