administrador.base.orm.where.parentesis_filtro - gamboamartin/administrador GitHub Wiki
parentesis_filtro
La función parentesis_filtro ajusta los filtros de un objeto stdClass envolviendo en paréntesis los valores no vacíos de las claves especificadas en $keys_data_filter. Antes de aplicar los paréntesis, la función limpia los filtros utilizando la función limpia_filtros. Si se detecta algún error durante este proceso, devuelve un array de error.
Signatura
private function parentesis_filtro(stdClass $filtros, array $keys_data_filter): stdClass|array
Parámetros
stdClass $filtros
- Tipo:
stdClass - Descripción: Un objeto que contiene los filtros a los que se les aplicarán los paréntesis. Las claves de este objeto corresponden a los elementos de
$keys_data_filter.
array $keys_data_filter
- Tipo:
array - Descripción: Un array de claves que representan los filtros dentro del objeto
$filtros. Estos filtros serán limpiados y, si no están vacíos, sus valores serán envueltos en paréntesis.
Retorno
stdClass|array
- Tipo:
stdClassoarray - Descripción:
- Si el proceso es exitoso, devuelve el objeto
$filtrosmodificado con los valores de los filtros envueltos en paréntesis cuando no están vacíos. - Si ocurre algún error durante la limpieza de los filtros, devuelve un array con los detalles del error.
- Si el proceso es exitoso, devuelve el objeto
Explicación Detallada
-
Copia del objeto
$filtros:- La función comienza copiando el objeto
$filtrosen una nueva variable$filtros_para trabajar con él sin modificar el objeto original directamente.
$filtros_ = $filtros; - La función comienza copiando el objeto
-
Limpieza de los filtros:
- Se llama a la función
limpia_filtrospara limpiar los valores de los filtros en función de las claves especificadas en$keys_data_filter. Esta función elimina espacios en blanco y asegura que los filtros estén bien formados. - Si se produce algún error durante este proceso, se devuelve un array de error.
$filtros_ = $this->limpia_filtros(filtros: $filtros_, keys_data_filter: $keys_data_filter); if(errores::$error){ return $this->error->error(mensaje: 'Error al limpiar filtros', data: $filtros_); } - Se llama a la función
-
Aplicación de paréntesis:
- La función recorre cada clave en
$keys_data_filter. Si el valor de la clave correspondiente en$filtros_no está vacío, el valor se envuelve en paréntesis.
foreach($keys_data_filter as $key){ if($filtros_->$key !== ''){ $filtros_->$key = ' ('.$filtros_->$key.') '; } } - La función recorre cada clave en
-
Retorno del objeto ajustado:
- Si no hay errores, la función devuelve el objeto
$filtros_con los valores ajustados.
return $filtros_; - Si no hay errores, la función devuelve el objeto
Ejemplos
$filtros = new stdClass();
$filtros->nombre = "Juan";
$filtros->edad = "30";
$filtros->ciudad = ""; // Vacío
$keys_data_filter = ['nombre', 'edad', 'ciudad'];
$resultado = $this->parentesis_filtro($filtros, $keys_data_filter);
// Resultado esperado:
// $filtros->nombre = " (Juan) ";
// $filtros->edad = " (30) ";
// $filtros->ciudad = ""; // No cambia porque está vacío.
Código de la Función
private function parentesis_filtro(stdClass $filtros, array $keys_data_filter): stdClass|array
{
$filtros_ = $filtros;
$filtros_ = $this->limpia_filtros(filtros: $filtros_, keys_data_filter: $keys_data_filter);
if(errores::$error){
return $this->error->error(mensaje: 'Error al limpiar filtros', data: $filtros_);
}
foreach($keys_data_filter as $key){
if($filtros_->$key!==''){
$filtros_->$key = ' ('.$filtros_->$key.') ';
}
}
return $filtros_;
}