'date', 'join_date' => 'date', 'resign_date' => 'date', 'is_active' => 'boolean', ]; public function user() { return $this->belongsTo(User::class); } protected static function boot() { parent::boot(); static::creating(function ($model) { if (empty($model->employee_id)) { $model->employee_id = $model->generateEmployeeId(); } }); } public function generateEmployeeId() { $prefix = 'HK-'; $lastEmployee = static::orderBy('created_at', 'desc')->first(); if ($lastEmployee) { $lastNumber = (int) substr($lastEmployee->employee_id, 3); $nextNumber = str_pad($lastNumber + 1, 4, '0', STR_PAD_LEFT); } else { $nextNumber = '0001'; } return $prefix . $nextNumber; } }