$id > 0)); if (!$tenantIds) { return []; } $placeholders = implode(',', array_fill(0, count($tenantIds), '?')); $joinUsersSql = $activeOnly ? ' join users u on u.id = ut.user_id and u.active = 1' : ''; $rows = DB::select( 'select ut.tenant_id, count(distinct ut.user_id) as user_count from user_tenants ut' . $joinUsersSql . ' where ut.tenant_id in (' . $placeholders . ') group by ut.tenant_id', ...array_map('strval', $tenantIds) ); if (!is_array($rows)) { return []; } $result = []; foreach ($rows as $row) { $tenantId = self::extractIntField($row, 'tenant_id'); if ($tenantId <= 0) { continue; } $result[$tenantId] = self::extractIntField($row, 'user_count'); } return $result; } private static function extractIntField(array $row, string $field): int { foreach ($row as $value) { if (!is_array($value)) { continue; } if (array_key_exists($field, $value)) { return (int) $value[$field]; } } if (array_key_exists($field, $row)) { return (int) $row[$field]; } return 0; } }