administrador.base.orm.where.where_filtro - gamboamartin/administrador GitHub Wiki
where_filtro
La función where_filtro
ajusta y valida la cláusula where
en un objeto stdClass
llamado $complemento
. Primero, llama a la función where_base
para inicializar y limpiar la cláusula where
, y luego utiliza la función verifica_where
para asegurar que la cláusula where
esté correctamente respaldada por filtros con contenido. Si ambas validaciones son exitosas, la función ajusta el formato de la cláusula where
añadiendo espacios adicionales y devuelve el objeto modificado. Si ocurre algún error en el proceso, devuelve un array con los detalles del error.
Signatura
private function where_filtro(stdClass $complemento, array $key_data_filter): array|stdClass
Parámetros
stdClass $complemento
- Tipo:
stdClass
- Descripción: Un objeto que contiene la propiedad
where
y los filtros que deben ser validados. La función ajusta y valida la cláusulawhere
basada en los filtros proporcionados.
array $key_data_filter
- Tipo:
array
- Descripción: Un array de claves que representan los filtros a validar en el objeto
$complemento
. La función se asegura de que al menos uno de estos filtros tenga contenido si la cláusulawhere
está presente.
Retorno
array|stdClass
- Tipo:
array
ostdClass
- Descripción:
- Si la operación es exitosa, devuelve el objeto
$complemento
modificado, con la cláusulawhere
ajustada y validada. - Si ocurre un error durante el ajuste o la validación de la cláusula
where
, devuelve un array de error con un mensaje y los detalles correspondientes.
- Si la operación es exitosa, devuelve el objeto
Explicación Detallada
-
Ajuste de la cláusula
where
mediantewhere_base
:- La función comienza llamando a
where_base
para asegurarse de que la cláusulawhere
esté presente, inicializada y en el formato correcto. - Si ocurre un error en
where_base
, se captura y se devuelve un array con los detalles del error.
$complemento_r = $this->where_base(complemento: $complemento); if(errores::$error){ return $this->error->error(mensaje: 'Error ajustar where', data: $complemento_r); }
- La función comienza llamando a
-
Validación de los filtros mediante
verifica_where
:- Después de ajustar la cláusula
where
, la función llama averifica_where
para validar que los filtros especificados en$key_data_filter
estén correctamente aplicados. - Si
where
no está vacía, debe haber al menos un filtro con contenido. Si todos los filtros están vacíos, se devuelve un error.
$verifica = $this->verifica_where(complemento: $complemento_r, key_data_filter: $key_data_filter); if(errores::$error){ return $this->error->error(mensaje: 'Error validar where', data: $verifica); }
- Después de ajustar la cláusula
-
Ajuste final de la cláusula
where
:- Si ambas validaciones son exitosas, la función ajusta el formato de la cláusula
where
, añadiendo espacios adicionales antes y después del valor para garantizar un formato consistente en las consultas SQL.
$complemento_r->where = ' ' . $complemento_r->where . ' ';
- Si ambas validaciones son exitosas, la función ajusta el formato de la cláusula
-
Retorno del objeto modificado:
- Finalmente, se devuelve el objeto
$complemento
con elwhere
ajustado.
- Finalmente, se devuelve el objeto
Ejemplos
$complemento = new stdClass();
$complemento->where = "where id = 1";
$complemento->nombre = "Juan";
$complemento->edad = " "; // vacío
$keys_data_filter = ['nombre', 'edad'];
$resultado = $this->where_filtro($complemento, $keys_data_filter);
// Resultado esperado:
// $complemento->where = " WHERE ID = 1 ";
Código de la Función
private function where_filtro(stdClass $complemento, array $key_data_filter): array|stdClass
{
$complemento_r = $this->where_base(complemento: $complemento);
if(errores::$error){
return $this->error->error(mensaje: 'Error ajustar where',data: $complemento_r);
}
$verifica = $this->verifica_where(complemento: $complemento_r,key_data_filter: $key_data_filter);
if(errores::$error){
return $this->error->error(mensaje:'Error validar where',data:$verifica);
}
$complemento_r->where = ' '.$complemento_r->where.' ';
return $complemento_r;
}