> 테이블별 컬럼 주석 캐시 */ private array $cache = []; /** * 모델 테이블의 컬럼명 => 주석 맵을 반환합니다. * * @param class-string|null $modelClass 모델 FQCN * @return array 컬럼명 => 주석 */ public function forModel(?string $modelClass): array { if (! $modelClass || ! class_exists($modelClass) || ! is_subclass_of($modelClass, Model::class)) { return []; } try { $table = (new $modelClass)->getTable(); } catch (\Throwable) { return []; } return $this->forTable($table); } /** * 테이블의 컬럼명 => 주석 맵을 반환합니다 (캐시). * * @param string $table 테이블명 * @return array 컬럼명 => 주석 */ public function forTable(string $table): array { if (isset($this->cache[$table])) { return $this->cache[$table]; } $map = []; try { foreach (Schema::getColumns($table) as $column) { $comment = $column['comment'] ?? null; if (is_string($comment) && $comment !== '') { $map[$column['name']] = $comment; } } } catch (\Throwable) { // 테이블 부재/드라이버 미지원 시 빈 맵 } return $this->cache[$table] = $map; } }