src.where.filtro_especial_sql - gamboamartin/where GitHub Wiki
filtro_especial_sql
La función filtro_especial_sql
es una función pública que construye una cláusula SQL completa a partir de una serie de filtros especiales aplicados a diferentes campos. La función procesa cada filtro especial y genera la cláusula SQL correspondiente, combinando todas las partes en una única cadena SQL.
Signatura
final public function filtro_especial_sql(array $columnas_extra, array $filtro_especial):array|string
Parámetros
-
array $columnas_extra
:
Un array que contiene columnas adicionales que pueden ser utilizadas para ajustar los campos si es necesario. Este array permite mapear un campo a otro nombre o formato si se requiere. -
array $filtro_especial
:
Un array que contiene múltiples filtros especiales que se van a aplicar a diferentes campos. Cada elemento del array debe ser un subarray que contenga las condiciones y valores del filtro especial para un campo específico.
Retorna
array|string
:
Retorna una cadena que representa la cláusula SQL completa generada a partir de los filtros especiales. En caso de error, retorna un array de error generado por$this->error->error()
.
Explicación Detallada
-
Inicialización de la cláusula SQL:
- La función inicializa la variable
$filtro_especial_sql
como una cadena vacía. Esta variable será utilizada para construir la cláusula SQL a partir de los filtros especiales.
- La función inicializa la variable
-
Procesamiento de cada filtro especial:
- La función itera sobre cada filtro en el array
$filtro_especial
. - Para cada filtro, se verifica que sea un array. Si el filtro no es un array, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función itera sobre cada filtro en el array
-
Generación de la cláusula SQL para cada filtro:
- La función llama a
obten_filtro_especial()
para generar la cláusula SQL correspondiente para cada filtro especial. - Si ocurre un error durante la generación del filtro, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función llama a
-
Combinación de las cláusulas SQL:
- Las cláusulas SQL generadas para cada filtro se combinan en una única cadena
$filtro_especial_sql
.
- Las cláusulas SQL generadas para cada filtro se combinan en una única cadena
-
Retorno de la cláusula SQL completa:
- La función retorna la cadena
$filtro_especial_sql
que representa la cláusula SQL completa generada a partir de los filtros especiales.
- La función retorna la cadena
Ejemplos
$columnas_extra = ['precio' => 'precio_ajustado'];
$filtro_especial = [
'precio' => ['valor' => 100, 'comparacion' => '>'],
'fecha' => ['valor' => '2024-01-01', 'comparacion' => '<=']
];
$resultado = $this->filtro_especial_sql($columnas_extra, $filtro_especial);
// Resultado esperado:
// Una cadena SQL que representa los filtros especiales aplicados a los campos 'precio' y 'fecha'.
// Un array de error si ocurre algún problema.
Código de la Función
final public function filtro_especial_sql(array $columnas_extra, array $filtro_especial):array|string
{
$filtro_especial_sql = '';
foreach ($filtro_especial as $campo=>$filtro_esp){
if(!is_array($filtro_esp)){
return $this->error->error(mensaje: "Error filtro debe ser un array filtro_especial[] = array()",
data: $filtro_esp, es_final: true);
}
$filtro_especial_sql = $this->obten_filtro_especial(columnas_extra: $columnas_extra,
filtro_esp: $filtro_esp, filtro_especial_sql: $filtro_especial_sql);
if(errores::$error){
return $this->error->error(mensaje:"Error filtro", data: $filtro_especial_sql);
}
}
return $filtro_especial_sql;
}