administrador.base.orm.where.genera_filtros_iniciales - gamboamartin/administrador GitHub Wiki
genera_filtros_iniciales
La función genera_filtros_iniciales
se encarga de crear y ajustar un conjunto de filtros iniciales para una consulta SQL. A partir de los parámetros SQL proporcionados, esta función asigna, limpia y ajusta los filtros, envolviendo en paréntesis los valores que lo requieren. Si se produce algún error en el proceso, devuelve un array con los detalles del error.
Signatura
private function genera_filtros_iniciales(string $diferente_de_sql, string $filtro_especial_sql,
string $filtro_extra_sql, string $filtro_rango_sql, string $in_sql,
array $keys_data_filter, string $not_in_sql, string $sentencia,
string $sql_extra, string $filtro_fecha_sql = ''): array|stdClass
Parámetros
string $diferente_de_sql
- Tipo:
string
- Descripción: Un filtro SQL que excluye ciertos valores (
!=
) en la consulta.
string $filtro_especial_sql
- Tipo:
string
- Descripción: Un filtro SQL que aplica una condición especial a la consulta.
string $filtro_extra_sql
- Tipo:
string
- Descripción: Un filtro adicional que se aplica en la consulta.
string $filtro_rango_sql
- Tipo:
string
- Descripción: Un filtro basado en un rango de valores para limitar la consulta.
string $in_sql
- Tipo:
string
- Descripción: Un filtro
IN
que especifica un conjunto de valores dentro de una cláusula SQL.
array $keys_data_filter
- Tipo:
array
- Descripción: Un array de claves que se utilizarán para identificar y limpiar los filtros en la consulta.
string $not_in_sql
- Tipo:
string
- Descripción: Un filtro
NOT IN
que excluye un conjunto de valores de la consulta SQL.
string $sentencia
- Tipo:
string
- Descripción: Una sentencia SQL adicional que se puede incluir en la consulta.
string $sql_extra
- Tipo:
string
- Descripción: Cláusulas SQL adicionales que se aplican a la consulta.
string $filtro_fecha_sql
(opcional)
- Tipo:
string
- Descripción: Un filtro basado en fechas que puede aplicarse en la consulta.
- Valor predeterminado:
''
(cadena vacía).
Retorno
array|stdClass
- Tipo:
array
o `stdClass** - Descripción:
- Si la operación es exitosa, devuelve un objeto
stdClass
que contiene los filtros generados y ajustados. - Si ocurre un error durante la asignación, limpieza o ajuste de los filtros, devuelve un array con un mensaje de error y los detalles correspondientes.
- Si la operación es exitosa, devuelve un objeto
Explicación Detallada
-
Asignación de filtros:
- La función comienza llamando a
asigna_data_filtro
de la clase\gamboamartin\where\where
para crear los filtros SQL con los parámetros proporcionados. - Si ocurre un error en la asignación de los filtros, se captura y se devuelve un array de error.
$filtros = (new \gamboamartin\where\where())->asigna_data_filtro( diferente_de_sql: $diferente_de_sql, filtro_especial_sql: $filtro_especial_sql, filtro_extra_sql: $filtro_extra_sql, filtro_fecha_sql: $filtro_fecha_sql, filtro_rango_sql: $filtro_rango_sql, in_sql: $in_sql, not_in_sql: $not_in_sql, sentencia: $sentencia, sql_extra: $sql_extra ); if (errores::$error) { return $this->error->error(mensaje: 'Error al asignar filtros', data: $filtros); }
- La función comienza llamando a
-
Limpieza de los filtros:
- La función llama a
limpia_filtros
para eliminar espacios en blanco y asegurar que los filtros estén bien formados. Si se produce un error durante esta limpieza, la función devuelve un array de error.
$filtros = $this->limpia_filtros(filtros: $filtros, keys_data_filter: $keys_data_filter); if (errores::$error) { return $this->error->error(mensaje: 'Error al limpiar filtros', data: $filtros); }
- La función llama a
-
Aplicación de paréntesis:
- Posteriormente, se ajustan los filtros envolviendo los valores en paréntesis mediante la función
parentesis_filtro
. Si ocurre algún error en este paso, se devuelve un array de error.
$filtros = $this->parentesis_filtro(filtros: $filtros, keys_data_filter: $keys_data_filter); if (errores::$error) { return $this->error->error(mensaje: 'Error al generar filtros', data: $filtros); }
- Posteriormente, se ajustan los filtros envolviendo los valores en paréntesis mediante la función
-
Retorno de los filtros generados:
- Si no se producen errores, la función devuelve el objeto
$filtros
con los filtros generados y ajustados.
return $filtros;
- Si no se producen errores, la función devuelve el objeto
Ejemplos
$diferente_de_sql = "id != 10";
$filtro_especial_sql = "estatus = 'activo'";
$filtro_extra_sql = "";
$filtro_rango_sql = "fecha BETWEEN '2023-01-01' AND '2023-12-31'";
$in_sql = "id IN (1, 2, 3)";
$not_in_sql = "";
$sentencia = "";
$sql_extra = "";
$filtro_fecha_sql = "";
$keys_data_filter = ['filtro_especial', 'filtro_extra', 'filtro_rango', 'in', 'not_in'];
$resultado = $this->genera_filtros_iniciales($diferente_de_sql, $filtro_especial_sql, $filtro_extra_sql,
$filtro_rango_sql, $in_sql, $keys_data_filter, $not_in_sql, $sentencia, $sql_extra, $filtro_fecha_sql);
Código de la Función
private function genera_filtros_iniciales(string $diferente_de_sql, string $filtro_especial_sql,
string $filtro_extra_sql, string $filtro_rango_sql, string $in_sql,
array $keys_data_filter, string $not_in_sql, string $sentencia,
string $sql_extra, string $filtro_fecha_sql = ''): array|stdClass
{
$filtros = (new \gamboamartin\where\where())->asigna_data_filtro(diferente_de_sql: $diferente_de_sql,
filtro_especial_sql: $filtro_especial_sql, filtro_extra_sql: $filtro_extra_sql,
filtro_fecha_sql: $filtro_fecha_sql, filtro_rango_sql: $filtro_rango_sql, in_sql: $in_sql,
not_in_sql: $not_in_sql,sentencia: $sentencia, sql_extra: $sql_extra);
if(errores::$error){
return $this->error->error(mensaje: 'Error al asignar filtros',data: $filtros);
}
$filtros = $this->limpia_filtros(filtros: $filtros, keys_data_filter: $keys_data_filter);
if(errores::$error){
return $this->error->error(mensaje:'Error al limpiar filtros',data:$filtros);
}
$filtros = $this->parentesis_filtro(filtros: $filtros,keys_data_filter: $keys_data_filter);
if(errores::$error){
return $this->error->error(mensaje:'Error al generar filtros',data:$filtros);
}
return $filtros;
}