administrador.base.orm.columnas.sub_query_str - gamboamartin/administrador GitHub Wiki

sub_query_str

La función sub_query_str es una función privada que construye una subconsulta SQL agregándole un alias. Esta función valida tanto la subconsulta como el alias, asegurando que ambos sean proporcionados correctamente antes de concatenarlos en una cadena SQL válida.

Signatura


private function sub_query_str(string $alias, string $sub_query): string|array

Parámetros

  • string $alias:
    El alias que se asignará a la subconsulta en la sentencia SQL. Este alias es esencial para referenciar la subconsulta en otras partes de la consulta SQL.

  • string $sub_query:
    La subconsulta SQL que se va a ejecutar. Debe ser una consulta válida que se pueda ejecutar de forma independiente o en combinación con otras partes de una consulta mayor.

Retorno

  • string|array:
    Retorna una cadena que representa la subconsulta SQL con el alias asignado. En caso de error (si la subconsulta o el alias están vacíos), retorna un array de error generado por $this->error->error().

Explicación Detallada

  1. Validación de la subconsulta:

    • La función limpia la subconsulta proporcionada ($sub_query) utilizando trim() para eliminar espacios en blanco al inicio y al final.
    • Si la subconsulta queda vacía después de aplicar trim(), se genera un error indicando que la subconsulta está vacía y se retorna un array con el mensaje de error.
  2. Validación del alias:

    • La función limpia el alias proporcionado ($alias) utilizando trim() para eliminar espacios en blanco al inicio y al final.
    • Si el alias queda vacío después de aplicar trim(), se genera un error indicando que el alias está vacío y se retorna un array con el mensaje de error.
  3. Construcción de la subconsulta con alias:

    • Si ambas validaciones son exitosas, la función concatena la subconsulta con el alias utilizando la sintaxis SQL AS y retorna la cadena resultante.

Ejemplos

$alias = 'sub_consulta_usuarios';
$sub_query = '(SELECT id FROM usuarios WHERE activo = 1)';

$resultado = $this->sub_query_str($alias, $sub_query);

// Resultado esperado:
// '(SELECT id FROM usuarios WHERE activo = 1) AS sub_consulta_usuarios'
// Un array de error si la subconsulta o el alias están vacíos.

Código de la Función

private function sub_query_str(string $alias, string $sub_query): string|array
    {
        $sub_query = trim($sub_query);
        if($sub_query === ''){
            return $this->error->error(mensaje: 'Error sub_query esta vacio ', data: $sub_query, es_final: true);
        }
        $alias = trim($alias);
        if($alias === ''){
            return $this->error->error(mensaje: 'Error alias esta vacio ', data: $alias, es_final: true);
        }
        return $sub_query . ' AS ' . $alias;

    }