src.where.es_subquery - gamboamartin/where GitHub Wiki

es_subquery

La función es_subquery es una función privada que verifica si un campo dado se encuentra dentro de un array de columnas extra. Devuelve un valor booleano indicando si el campo es una subconsulta o un array con un mensaje de error si el campo está vacío.

Signatura

private function es_subquery(string $campo, array $columnas_extra): bool|array

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

  • bool|array: La función devuelve true si el campo se encuentra en el array de columnas_extra, false si no se encuentra, y un array con un mensaje de error si el campo está vacío.

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.
  • Inicialización de la variable es_subquery:

    • La variable es_subquery se inicializa en false.
  • Verificación de existencia en columnas extra:

    • La función verifica si el campo existe en el array columnas_extra. Si existe, la variable es_subquery se establece en true.
  • Retorno del resultado:

    • Finalmente, la función retorna el valor de es_subquery, que puede ser true o false.

Ejemplos

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

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

if ($resultado === true) {
    echo "El campo es una subconsulta.";
} elseif ($resultado === false) {
    echo "El campo no es una subconsulta.";
} else {
    echo "Error: " . $resultado['mensaje'];
}

/*
En este ejemplo, si 'columna1' se encuentra en $columnas_extra, la función retornará true indicando que es una subconsulta. Si no se encuentra, retornará false. Si el campo está vacío, retornará un array con un mensaje de error.
*/

Código de la Función

private function es_subquery(string $campo, array $columnas_extra): bool|array
    {
        $campo = trim($campo);
        if($campo === ''){
            return $this->error->error(mensaje:'Error campo esta vacio',  data:$campo, es_final: true);
        }
        $es_subquery = false;
        if(isset($columnas_extra[$campo])){
            $es_subquery = true;
        }
        return $es_subquery;

    }