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

obten_columnas_completas

La función obten_columnas_completas es una función pública que genera una cadena completa de columnas SQL para una consulta, integrando diferentes configuraciones y estructuras. Esta función centraliza el proceso de construcción de columnas SQL, asegurando que todas las tablas y columnas necesarias se integren correctamente.

Signatura


final public function obten_columnas_completas(modelo_base $modelo, array $columnas_by_table = array(),bool $columnas_en_bruto = false, array $columnas_sql = array(), array $extension_estructura = array(), array $extra_join = array(), array $renombres = array()): array|string

Parámetros

  • modelo_base $modelo:
    Una instancia de la clase modelo_base que representa el modelo de datos sobre el que se está trabajando. Este objeto proporciona los metadatos y atributos necesarios para ajustar las columnas y seleccionar las tablas.

  • array $columnas_by_table (opcional):
    Un array que contiene los nombres de las tablas que se van a utilizar en la consulta SQL. Este array solo se debe utilizar si la lógica de columnas por tabla está habilitada. El valor por defecto es un array vacío.

  • bool $columnas_en_bruto (opcional):
    Un valor booleano que indica si las columnas deben ser procesadas en su forma original (true) o si deben ser ajustadas y personalizadas (false). El valor por defecto es false.

  • array $columnas_sql (opcional):
    Un array que contiene columnas SQL adicionales o personalizadas que pueden ser integradas en la cadena resultante. El valor por defecto es un array vacío.

  • array $extension_estructura (opcional):
    Un array que define la estructura de extensión para la consulta SQL. Las claves del array son los nombres de las tablas y los valores contienen los datos específicos relacionados con la tabla. El valor por defecto es un array vacío.

  • array $extra_join (opcional):
    Un array que contiene información sobre columnas adicionales que se deben agregar a la consulta desde uniones (JOIN) extras. El valor por defecto es un array vacío.

  • array $renombres (opcional):
    Un array que contiene las tablas y los nombres alternativos (renombres) que deben ser aplicados. Las claves del array son los nombres de las tablas, y los valores son arrays que contienen la información relacionada con el renombrado de columnas. El valor por defecto es un array vacío.

Retorno

  • array|string:
    Retorna una cadena que representa las columnas SQL generadas y ajustadas para su uso en la consulta. En caso de error, retorna un array de error generado por $this->error->error().

Explicación Detallada

  1. Inicialización de tablas seleccionadas:

    • La función llama a tablas_select() desde una instancia de inicializacion para obtener las tablas que se van a utilizar en la consulta.
    • Si ocurre un error durante la inicialización, se genera un mensaje de error y se retorna un array de error.
  2. Generación de columnas completas:

    • La función llama a columnas_full() para generar la cadena completa de columnas SQL, integrando las tablas seleccionadas y las configuraciones adicionales proporcionadas.
    • Si ocurre un error durante la integración de las columnas, se genera un mensaje de error y se retorna un array de error.
  3. Retorno de las columnas generadas:

    • Si todas las etapas se completan con éxito, la función retorna la cadena de columnas SQL generadas y ajustadas, con un espacio añadido al final.

Ejemplos

$modelo = new modelo_base();
$columnas_by_table = ['usuarios', 'pedidos'];
$columnas_en_bruto = false;
$columnas_sql = ['id', 'nombre', 'email'];
$extension_estructura = ['usuarios' => ['campo1', 'campo2']];
$extra_join = ['extra_campo' => 'valor_extra'];
$renombres = ['usuarios' => ['renombre' => 'usuarios_activos']];

$resultado = $this->obten_columnas_completas($modelo, $columnas_by_table, $columnas_en_bruto, $columnas_sql, $extension_estructura, $extra_join, $renombres);

// Resultado esperado:
// Una cadena con las columnas SQL generadas y ajustadas, con un espacio al final.
// Un array de error si ocurre algún problema.

Código de la Función

final public function obten_columnas_completas(modelo_base $modelo, array $columnas_by_table = array(),
                                                   bool $columnas_en_bruto = false, array $columnas_sql = array(),
                                                   array $extension_estructura = array(), array $extra_join = array(),
                                                   array $renombres = array()):array|string{


        $tablas_select = (new inicializacion())->tablas_select(modelo: $modelo);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al inicializar tablas select en '.$modelo->tabla,
                data:  $tablas_select);
        }

        $columnas = $this->columnas_full(columnas_by_table: $columnas_by_table, columnas_en_bruto: $columnas_en_bruto,
            columnas_sql: $columnas_sql, extension_estructura: $extension_estructura, extra_join: $extra_join,
            modelo: $modelo, renombres: $renombres, tablas_select: $tablas_select);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al integrar columnas en '.$modelo->tabla, data: $columnas);
        }

        return $columnas.' ';
    }