administrador.base.orm.where.verifica_where - gamboamartin/administrador GitHub Wiki
verifica_where
La función verifica_where valida la correcta aplicación de una cláusula where en un objeto stdClass llamado $complemento. Si la propiedad where no está definida o está vacía, no se realizan más comprobaciones. Si la propiedad where tiene un valor, la función verifica que al menos uno de los filtros especificados en el array $key_data_filter no esté vacío. Si todos los filtros están vacíos y existe una cláusula where, la función devuelve un error.
Signatura
private function verifica_where(stdClass $complemento, array $key_data_filter): bool|array
Parámetros
stdClass $complemento
- Tipo:
stdClass - Descripción: Un objeto que contiene la propiedad
wherey otras claves que deben ser validadas. La función valida si, cuando existe una cláusulawhere, hay al menos un filtro con contenido.
array $key_data_filter
- Tipo:
array - Descripción: Un array de claves que deben ser verificadas en el objeto
$complemento. La función asegura que, siwhereno está vacío, al menos una de estas claves tenga un valor no vacío.
Retorno
bool|array
- Tipo:
booloarray - Descripción:
- Devuelve
truesi la validación es exitosa, es decir, si la cláusulawhereestá correctamente aplicada y al menos uno de los filtros no está vacío. - Si ocurre un error en el proceso de validación o si hay una cláusula
wherepero todos los filtros están vacíos, la función devuelve un array con un mensaje de error y los detalles del problema.
- Devuelve
Explicación Detallada
-
Inicialización de la propiedad
where:- Si la propiedad
whereno está definida en el objeto$complemento, se inicializa con una cadena vacía ('').
- Si la propiedad
-
Verificación de la existencia de filtros cuando
whereestá presente:- Si la propiedad
whereno está vacía, la función llama afiltros_vaciospara verificar si todos los filtros especificados en$key_data_filterestán vacíos. - Si
filtros_vaciosdevuelvetrue(es decir, todos los filtros están vacíos), ywhereno está vacío, la función genera un error indicando que debe haber al menos un filtro si existe una cláusulawhere.
- Si la propiedad
-
Manejo de errores:
- Si se produce un error durante la verificación de los filtros, la función devuelve un array con un mensaje de error y los detalles correspondientes.
Ejemplos
$complemento = new stdClass();
$complemento->where = "WHERE id = 1";
$complemento->nombre = " "; // filtro vacío
$complemento->edad = ""; // filtro vacío
$keys_data_filter = ['nombre', 'edad'];
$resultado = $this->verifica_where($complemento, $keys_data_filter);
// Resultado esperado: Error, ya que existe un WHERE pero todos los filtros están vacíos.
Código de la Función
private function verifica_where(stdClass $complemento, array $key_data_filter): bool|array
{
if(!isset($complemento->where)){
$complemento->where = '';
}
if($complemento->where!==''){
$filtros_vacios = $this->filtros_vacios(complemento: $complemento, keys_data_filter: $key_data_filter);
if(errores::$error){
return $this->error->error(mensaje: 'Error validar filtros',data: $filtros_vacios);
}
if($filtros_vacios){
return $this->error->error(mensaje: 'Error si existe where debe haber al menos un filtro',
data: $complemento, es_final: true);
}
}
return true;
}