id(); $table->foreignId('employee_id')->constrained()->cascadeOnDelete(); $table->string('type'); $table->date('start_date'); $table->date('end_date'); $table->date('return_date')->nullable(); $table->unsignedInteger('days'); $table->string('status')->default('pending'); $table->text('reason')->nullable(); $table->string('attachment_path')->nullable(); $table->foreignId('approved_by')->nullable()->constrained('users')->nullOnDelete(); $table->timestamp('approved_at')->nullable(); $table->timestamps(); $table->softDeletes(); $table->index('status'); $table->index('start_date'); $table->index('end_date'); $table->index(['employee_id', 'start_date']); }); } public function down(): void { Schema::dropIfExists('vacations'); } };