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:
stdClass
oarray
- Descripción:
- Si el proceso es exitoso, devuelve el objeto
$filtros
modificado 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
$filtros
en 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_filtros
para 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_;
}