diff --git a/app/Models/User.php b/app/Models/User.php index f8786e18..9240da23 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -195,6 +195,14 @@ public function currentTenant() return $this->tenants()->find($tenantId); } + /** + * 관계: 테넌트별 프로필 (tenant_user_profiles 테이블) + */ + public function tenantProfiles(): HasMany + { + return $this->hasMany(\App\Models\HR\Employee::class, 'user_id'); + } + /** * 관계: 사용자-역할 (user_roles 테이블, 테넌트별) */ diff --git a/app/Services/HR/AttendanceRequestService.php b/app/Services/HR/AttendanceRequestService.php index 0ec06757..8bfc534a 100644 --- a/app/Services/HR/AttendanceRequestService.php +++ b/app/Services/HR/AttendanceRequestService.php @@ -18,7 +18,7 @@ public function getRequests(array $filters = [], int $perPage = 20): LengthAware $tenantId = session('selected_tenant_id'); $query = AttendanceRequest::query() - ->with(['user', 'user.tenantProfiles' => fn ($q) => $q->where('tenant_id', $tenantId), 'approver']) + ->with(['user', 'user.tenantProfiles' => fn ($q) => $q->where('tenant_id', $tenantId), 'user.tenantProfiles.department', 'approver']) ->forTenant($tenantId) ->orderByRaw("FIELD(status, 'pending', 'approved', 'rejected')") ->orderBy('created_at', 'desc'); diff --git a/app/Services/HR/AttendanceService.php b/app/Services/HR/AttendanceService.php index ceff5bd9..d5f66d22 100644 --- a/app/Services/HR/AttendanceService.php +++ b/app/Services/HR/AttendanceService.php @@ -21,7 +21,7 @@ private function buildFilteredQuery(array $filters = []) $tenantId = session('selected_tenant_id'); $query = Attendance::query() - ->with(['user', 'user.tenantProfiles' => fn ($q) => $q->where('tenant_id', $tenantId)]) + ->with(['user', 'user.tenantProfiles' => fn ($q) => $q->where('tenant_id', $tenantId), 'user.tenantProfiles.department']) ->forTenant($tenantId); if (! empty($filters['q'])) { @@ -327,7 +327,7 @@ public function getMonthlyCalendarData(int $year, int $month, ?int $userId = nul $endDate = Carbon::create($year, $month, 1)->endOfMonth()->toDateString(); $query = Attendance::query() - ->with(['user', 'user.tenantProfiles' => fn ($q) => $q->where('tenant_id', $tenantId)]) + ->with(['user', 'user.tenantProfiles' => fn ($q) => $q->where('tenant_id', $tenantId), 'user.tenantProfiles.department']) ->forTenant($tenantId) ->betweenDates($startDate, $endDate) ->orderBy('base_date')