src.where.campo_filtro_especial - gamboamartin/where GitHub Wiki

campo_filtro_especial

La función campo_filtro_especial es una función final y pública que verifica si un campo dado es una subconsulta y, de ser así, devuelve el campo correspondiente en el array de columnas extra. Si el campo no es una subconsulta, devuelve el campo original. En caso de errores, devuelve un array con un mensaje de error.

Signatura

final public function campo_filtro_especial(string $campo, array $columnas_extra): array|string

Parámetros

$campo (string): El campo que se va a verificar. Es una cadena de texto que se limpiará de espacios en blanco al inicio y al final.

$columnas_extra (array): Un array asociativo que contiene las columnas extra donde se buscará el campo.

Retorna

  • array|string: La función devuelve el campo correspondiente en columnas_extra si es una subconsulta. Si no es una subconsulta, devuelve el campo original. En caso de error, devuelve un array con un mensaje de error.

Explicación Detallada

  • Limpieza del campo:

    • La función comienza eliminando los espacios en blanco al inicio y al final de la cadena $campo.
  • Verificación de campo vacío:

    • Si el campo está vacío después de la limpieza, la función retorna un array con un mensaje de error indicando que el campo está vacío.
  • Verificación de subconsulta:

    • La función llama a es_subquery para verificar si el campo es una subconsulta.
  • Manejo de errores en subconsulta:

    • Si ocurre un error en la verificación de subconsulta, la función retorna un array con un mensaje de error.
  • Actualización del campo si es subconsulta:

    • Si el campo es una subconsulta, se actualiza el campo con el valor correspondiente en columnas_extra.
  • Retorno del campo:

    • Finalmente, la función retorna el campo actualizado o el campo original si no es una subconsulta.

Ejemplos

$columnas_extra = [
    'columna1' => 'valor1',
    'columna2' => 'valor2',
    // más columnas...
];

$resultado = $this->campo_filtro_especial('columna1', $columnas_extra);

if (is_array($resultado)) {
    echo "Error: " . $resultado['mensaje'];
} else {
    echo "El campo es: " . $resultado;
}

/*
En este ejemplo, si 'columna1' es una subconsulta, la función retornará el valor correspondiente en columnas_extra. Si no es una subconsulta, retornará 'columna1'. En caso de error, retornará un array con un mensaje de error.


*/

Código de la Función

final public function campo_filtro_especial(string $campo, array $columnas_extra): array|string
    {
        $campo = trim($campo);
        if($campo === ''){
            return $this->error->error(mensaje:'Error campo esta vacio',  data:$campo, es_final: true);
        }

        $es_subquery = $this->es_subquery(campo: $campo,columnas_extra:  $columnas_extra);
        if(errores::$error){
            return $this->error->error(mensaje:'Error al subquery bool',  data:$es_subquery);
        }

        if($es_subquery){
            $campo = $columnas_extra[$campo];
        }
        return $campo;

    }