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

columnas_sql_init

La función columnas_sql_init genera una cadena SQL que incluye una lista de columnas, utilizando alias si es necesario. La función valida que el nombre de la tabla no esté vacío y procesa cada columna en base a los parámetros proporcionados. El retorno es la cadena SQL generada o un array en caso de error.

Signatura

private function columnas_sql_init(array $columnas, bool $columnas_en_bruto, array $columnas_parseadas, string $tabla_nombre):array|string

Parámetros

  • $columnas (array): Arreglo de alias de columnas que deben ser incluidas en la consulta SQL.
    • Descripción: Si el arreglo no está vacío, solo se procesarán las columnas cuyos alias están en este arreglo.
  • $columnas_en_bruto (bool): Indicador de si las columnas deben ser usadas en bruto o con alias.
    • Descripción: Si es true, las columnas se usarán sin alias; de lo contrario, se les asignará un alias.
  • $columnas_parseadas (array): Arreglo de nombres de columnas a ser incluidas en la consulta SQL.
    • Descripción: Estas columnas serán procesadas para formar la cadena SQL.
  • $tabla_nombre (string): Nombre de la tabla que se usará como prefijo para las columnas.
    • Descripción: Se usará para formar los alias de las columnas y debe ser una cadena no vacía.

Retorna

  • string: La cadena SQL generada con las columnas y sus alias.

    • Descripción: La cadena contiene todas las columnas procesadas, con o sin alias, y es el resultado final de la función.
  • array: Si ocurre un error (por ejemplo, si $tabla_nombre está vacío o si hay un problema al obtener las columnas SQL), se retorna un array con un mensaje de error.

    • Descripción: Este array describe el error ocurrido durante el proceso.

Explicación Detallada

  • Validación del Nombre de la Tabla:

    • La función verifica que $tabla_nombre no esté vacío. Si lo está, se retorna un array con un mensaje de error.
  • Inicialización de la Cadena SQL:

    • Se inicializa una cadena vacía $columnas_sql para construir la consulta SQL.
  • Procesamiento de Columnas:

    • Se itera sobre cada columna en $columnas_parseadas. Para cada columna, se genera un alias usando el nombre de la tabla y el nombre de la columna.
    • Si $columnas no está vacío y el alias de la columna no está en el arreglo $columnas, se omite la columna.
  • Generación de la Consulta SQL:

    • Se llama a la función columnas_sql para cada columna, añadiendo la columna y su alias (si corresponde) a la cadena SQL.
    • Si ocurre un error al llamar a columnas_sql, se retorna un array con un mensaje de error.
  • Retorno de la Cadena SQL:

    • Si todas las columnas se procesan sin errores, la cadena SQL final es retornada.
  • Posibles Errores

    • Nombre de Tabla Vacío: Si $tabla_nombre está vacío, la función retorna un array con un mensaje de error.
    • Error en la Generación de Columnas SQL: Si ocurre un problema al obtener la cadena SQL para las columnas, se retorna un array con un mensaje de error.

Ejemplos

$columnas = ['mi_tabla_nombre_columna1', 'mi_tabla_nombre_columna2'];
$columnas_en_bruto = false;
$columnas_parseadas = ['nombre_columna1', 'nombre_columna2'];
$tabla_nombre = 'mi_tabla';

$resultado = $this->columnas_sql_init($columnas, $columnas_en_bruto, $columnas_parseadas, $tabla_nombre);

if (is_string($resultado)) {
    echo "Consulta SQL: " . $resultado;
} else {
    echo "Error: " . $resultado['mensaje'];
}

Código de la Función

private function columnas_sql_init(array $columnas, bool $columnas_en_bruto, array $columnas_parseadas,
                                       string $tabla_nombre):array|string
    {
        if($tabla_nombre === ''){
            return $this->error->error(mensaje: 'Error $tabla_nombre no puede venir vacia',data:  $tabla_nombre,
                es_final: true);
        }
        $columnas_sql = '';
        foreach($columnas_parseadas as $columna_parseada){
            $alias_columnas = $tabla_nombre.'_'.$columna_parseada;
            if((count($columnas) > 0) && !in_array($alias_columnas, $columnas, true)) {
                continue;
            }
            $columnas_sql = $this->columnas_sql(alias_columnas: $alias_columnas, columna_parseada: $columna_parseada,
                columnas_en_bruto: $columnas_en_bruto, columnas_sql: $columnas_sql, tabla_nombre: $tabla_nombre);
            if(errores::$error){
                return $this->error->error(mensaje: 'Error al obtener columnas sql',data:  $columnas_sql);
            }
        }


        return $columnas_sql;
    }