src.where.filtro_extra_sql - gamboamartin/where GitHub Wiki
filtro_extra_sql
La función filtro_extra_sql
es una función pública que construye una cláusula SQL adicional combinando múltiples filtros extraídos de un array. Recorre cada filtro, valida su estructura, y lo integra en una cláusula SQL acumulativa.
Signatura
final public function filtro_extra_sql(array $filtro_extra):array|string
Parámetros
array $filtro_extra
:
Un array de filtros adicionales, donde cada elemento es un array asociativo que contiene las condiciones necesarias para construir una cláusula SQL. Cada filtro debe incluir claves comooperador
,valor
, ycomparacion
.
Retorna
array|string
:
Retorna una cadena que representa la cláusula SQL completa generada a partir de los filtros adicionales. 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 comienza inicializando
$filtro_extra_sql
como una cadena vacía, que se utilizará para construir la cláusula SQL final.
- La función comienza inicializando
-
Iteración sobre los filtros adicionales:
- La función recorre cada elemento en el array
$filtro_extra
. Cada elemento debe ser un array que contenga las claves necesarias para construir una condición SQL.
- La función recorre cada elemento en el array
-
Validación de cada filtro:
- La función verifica que cada filtro (
$data_filtro
) sea un array. Si no lo es, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función verifica que cada filtro (
-
Integración del filtro en la cláusula SQL:
- La función llama a
integra_filtro_extra()
para validar y combinar cada filtro con la cláusula SQL acumulativa. - Si ocurre un error durante este proceso, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función llama a
-
Retorno de la cláusula SQL completa:
- Después de procesar todos los filtros, la función retorna la cadena
$filtro_extra_sql
que contiene todas las condiciones combinadas.
- Después de procesar todos los filtros, la función retorna la cadena
Ejemplos
$filtro_extra = [
[
'operador' => '=',
'valor' => '100',
'comparacion' => 'AND'
],
[
'operador' => 'LIKE',
'valor' => '%producto%',
'comparacion' => 'AND'
]
];
$resultado = $this->filtro_extra_sql($filtro_extra);
// Resultado esperado:
// "campo1='100' AND campo2 LIKE '%producto%'"
// Un array de error si ocurre algún problema.
Código de la Función
final public function filtro_extra_sql(array $filtro_extra):array|string
{
$filtro_extra_sql = '';
foreach($filtro_extra as $data_filtro){
if(!is_array($data_filtro)){
return $this->error->error(mensaje: 'Error $data_filtro debe ser un array',data: $filtro_extra,
es_final: true);
}
$filtro_extra_sql = $this->integra_filtro_extra(
data_filtro: $data_filtro, 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;
}