id(); $table->foreignId('payroll_period_id')->constrained()->cascadeOnDelete(); $table->foreignId('employee_id')->constrained()->cascadeOnDelete(); $table->foreignId('cash_transaction_id')->nullable()->unique()->constrained()->restrictOnDelete(); $table->foreignId('paid_by_id')->nullable()->constrained('users')->nullOnDelete(); $table->unsignedInteger('base_salary'); $table->unsignedBigInteger('bonus_amount')->default(0); $table->unsignedBigInteger('deduction_amount')->default(0); $table->unsignedBigInteger('total_amount'); $table->enum('status', PayrollStatus::values())->default(PayrollStatus::UNPAID->value); $table->timestamp('paid_at')->nullable(); $table->timestamp('created_at')->useCurrent(); $table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate(); $table->softDeletes(); }); } public function down(): void { Schema::dropIfExists('payrolls'); } };