src.where.integra_filtro_extra - gamboamartin/where GitHub Wiki
integra_filtro_extra
La función integra_filtro_extra
es una función privada que se encarga de integrar un filtro adicional en una cláusula SQL existente. La función valida y extrae los datos del filtro, genera la condición SQL correspondiente, y luego combina esta condición con la cláusula SQL existente.
Signatura
private function integra_filtro_extra(array $data_filtro, string $filtro_extra_sql): object|string|array
Parámetros
-
array $data_filtro
:
Un array asociativo que contiene los datos del filtro especial. Este array debe incluir las clavesoperador
,valor
ycomparacion
, que son esenciales para construir la condición SQL. -
string $filtro_extra_sql
:
La cláusula SQL existente a la que se le agregará la nueva condición generada a partir de$data_filtro
.
Retorna
object|string|array
:
Retorna una cadena que representa la cláusula SQL combinada con la nueva condición generada. En caso de error, retorna un array de error generado por$this->error->error()
.
Explicación Detallada
-
Validación del array
$data_filtro
:- La función verifica si el array
$data_filtro
está vacío. Si está vacío, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función verifica si el array
-
Extracción de los datos del filtro:
- La función llama a
datos_filtro_especial()
para extraer y validar los datos del filtro, como el campo, el operador, el valor, y la comparación. - Si ocurre un error durante la extracción de los datos del filtro, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función llama a
-
Generación de la condición SQL:
- La función utiliza
filtro_extra_sql_genera()
para combinar la condición generada con la cláusula SQL existente ($filtro_extra_sql
), utilizando la comparación definida en los datos del filtro. - Si ocurre un error durante la generación de la condición SQL, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función utiliza
-
Retorno de la cláusula SQL combinada:
- La función retorna la cadena
$filtro_extra_sql
que representa la cláusula SQL combinada con la nueva condición generada.
- La función retorna la cadena
Ejemplos
$data_filtro = [
'precio' => [
'operador' => '=',
'valor' => '100',
'comparacion' => 'AND'
]
];
$filtro_extra_sql = "fecha >= '2023-01-01'";
$resultado = $this->integra_filtro_extra($data_filtro, $filtro_extra_sql);
// Resultado esperado:
// "fecha >= '2023-01-01' AND precio='100'"
// Un array de error si ocurre algún problema.
Código de la Función
private function integra_filtro_extra(array $data_filtro, string $filtro_extra_sql): object|string|array
{
if(count($data_filtro) === 0){
return $this->error->error(mensaje:'Error data_filtro esta vacio', data:$data_filtro, es_final: true);
}
$datos = $this->datos_filtro_especial(data_filtro: $data_filtro);
if(errores::$error){
return $this->error->error(mensaje: 'Error al obtener datos de filtro',data: $datos);
}
$filtro_extra_sql = $this->filtro_extra_sql_genera(comparacion: $datos->comparacion,
condicion: $datos->condicion,filtro_extra_sql: $filtro_extra_sql);
if(errores::$error){
return $this->error->error(mensaje: 'Error al generar filtro',data: $filtro_extra_sql);
}
return $filtro_extra_sql;
}