'integer', 'value_integer' => 'integer', 'value_boolean' => 'boolean', 'value_float' => 'float', 'updated_by' => 'integer', ]; // ───────────────────────────────────────────── // Metadatos personalizados para el generador de componentes // ───────────────────────────────────────────── public string $tagName = 'setting'; public string $columnNameLabel = 'key'; public string $singularName = 'Configuración'; public string $pluralName = 'Configuraciones'; // ───────────────────────────────────────────── // Relaciones // ───────────────────────────────────────────── public function user(): BelongsTo { return $this->belongsTo(User::class); } public function updatedBy(): BelongsTo { return $this->belongsTo(User::class, 'updated_by'); } // ───────────────────────────────────────────── // Scopes // ───────────────────────────────────────────── /** * Configuraciones para un usuario específico. */ public function scopeForUser($query, int $userId) { return $query->where('user_id', $userId); } /** * Configuraciones globales (sin usuario). */ public function scopeGlobal($query) { return $query->whereNull('user_id'); } /** * Incluir columna virtual `value` en la consulta. */ public function scopeWithVirtualValue($query) { return $query->select(['key', 'value']); } }