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
where
y 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, siwhere
no está vacío, al menos una de estas claves tenga un valor no vacío.
Retorno
bool|array
- Tipo:
bool
oarray
- Descripción:
- Devuelve
true
si la validación es exitosa, es decir, si la cláusulawhere
está 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
where
pero 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
where
no está definida en el objeto$complemento
, se inicializa con una cadena vacía (''
).
- Si la propiedad
-
Verificación de la existencia de filtros cuando
where
está presente:- Si la propiedad
where
no está vacía, la función llama afiltros_vacios
para verificar si todos los filtros especificados en$key_data_filter
están vacíos. - Si
filtros_vacios
devuelvetrue
(es decir, todos los filtros están vacíos), ywhere
no 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;
}