self::PRODUCTS, self::SOURCE_TABLE_MATERIALS => self::MATERIALS, default => [] }; // 공통 시스템 컬럼 병합 return array_unique(array_merge(self::COMMON, $tableFields)); } /** * 특정 field_key가 시스템 필드인지 확인 */ public static function isReserved(string $fieldKey, string $sourceTable): bool { return in_array($fieldKey, self::getReservedKeys($sourceTable), true); } /** * group_id에 속한 모든 테이블의 예약어 목록 조회 * (item_type을 모를 때 안전하게 모든 예약어 체크) */ public static function getAllReservedKeysForGroup(int $groupId): array { $allFields = self::COMMON; if ($groupId === self::GROUP_ITEM_MASTER) { $allFields = array_merge($allFields, self::PRODUCTS, self::MATERIALS); } return array_unique($allFields); } /** * 특정 field_key가 그룹 내 어떤 테이블에서든 시스템 필드인지 확인 */ public static function isReservedInGroup(string $fieldKey, int $groupId): bool { return in_array($fieldKey, self::getAllReservedKeysForGroup($groupId), true); } }