'array', 'is_critical' => 'boolean', 'display_order' => 'integer', 'created_at' => 'datetime', 'updated_at' => 'datetime', ]; // ============================================ // Relationships // ============================================ /** * 소속 테넌트 */ public function tenant() { return $this->belongsTo(Tenant::class, 'tenant_id'); } // ============================================ // Query Scopes // ============================================ /** * 특정 테이블의 통계 필드만 */ public function scopeForTable($query, string $targetTable) { return $query->where('target_table', $targetTable); } /** * 중요 필드만 (일일 통계 대상) */ public function scopeCritical($query) { return $query->where('is_critical', true); } /** * 특정 집계 함수를 포함하는 필드 */ public function scopeWithAggregation($query, string $aggregationType) { return $query->whereJsonContains('aggregation_types', $aggregationType); } /** * 표시 순서대로 정렬 */ public function scopeOrdered($query) { return $query->orderBy('display_order')->orderBy('field_name'); } }