'decimal:2', 'destacado' => 'boolean', 'activo' => 'boolean', 'orden' => 'integer', 'created_at' => 'datetime', 'updated_at' => 'datetime', ]; /** * Scope para filtrar productos activos */ public function scopeActivo(Builder $query): Builder { return $query->where('activo', true); } /** * Scope para filtrar productos destacados */ public function scopeDestacado(Builder $query): Builder { return $query->where('destacado', true); } /** * Scope para filtrar por categoría */ public function scopePorCategoria(Builder $query, string $categoria): Builder { return $query->where('categoria', $categoria); } /** * Obtener precio formateado */ public function getPrecioFormateadoAttribute(): string { $currency = config('currency'); return $currency['symbol'].number_format($this->precio, $currency['decimal_places'], $currency['decimal_separator'], $currency['thousands_separator']); } /** * Verificar si tiene imagen */ public function tieneImagen(): bool { return ! empty($this->imagen); } }