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

columnas_base

La función columnas_base es una función privada que integra y ajusta columnas SQL a través de varias etapas de procesamiento, incluyendo la selección, extensión, incorporación de columnas adicionales y el renombrado. Esta función centraliza el proceso de construcción de las columnas SQL necesarias para una consulta compleja, asegurando que todas las configuraciones y personalizaciones necesarias se apliquen correctamente.

Signatura


private function columnas_base(bool $columnas_en_bruto, array $columnas_sql, array $extension_estructura, array $extra_join, modelo_base$modelo, array $renombres, array $tablas_select): array|string

Parámetros

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

  • array $columnas_sql:
    Un array que contiene columnas SQL adicionales o personalizadas que pueden ser integradas en la cadena resultante.

  • array $extension_estructura:
    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.

  • array $extra_join:
    Un array que contiene información sobre columnas adicionales que se deben agregar a la consulta desde uniones (JOIN) extras.

  • 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.

  • array $renombres:
    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.

  • array $tablas_select:
    Un array que contiene las tablas de las cuales se desean seleccionar columnas. Las claves del array son los nombres de las tablas y los valores son los nombres de estas tablas.

Retorno

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

Explicación Detallada

  1. Selección de columnas básicas:

    • La función inicia llamando a columnas_tablas_select() para generar una cadena de columnas basada en las tablas seleccionadas en $tablas_select.
    • Si ocurre un error en esta etapa, se retorna un array con el mensaje de error.
  2. Extensión de columnas:

    • Se llama a columnas_extension() para agregar columnas adicionales basadas en la estructura de extensión proporcionada en $extension_estructura.
    • Si ocurre un error durante la extensión, se retorna un array con el mensaje de error.
  3. Incorporación de columnas extras:

    • Se llama a columnas_extra() para agregar columnas adicionales provenientes de uniones (JOIN) definidas en $extra_join.
    • Si ocurre un error en esta integración, se retorna un array con el mensaje de error.
  4. Renombrado de columnas:

    • Finalmente, se llama a columnas_renombre() para ajustar y renombrar las columnas según los valores definidos en $renombres.
    • Si ocurre un error en el renombrado, se retorna un array con el mensaje de error.
  5. Retorno de las columnas ajustadas:

    • Si todas las etapas se completan con éxito, la función retorna la cadena de columnas SQL final, ajustada y lista para ser utilizada en la consulta.

Ejemplos

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

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

// Resultado esperado:
// Una cadena con las columnas ajustadas, extendidas, con columnas extras, y renombradas.
// Un array de error si ocurre algún problema.

Código de la Función

private function columnas_base(bool $columnas_en_bruto, array $columnas_sql, array $extension_estructura,
                                   array $extra_join, modelo_base $modelo, array $renombres,
                                   array $tablas_select): array|string
    {
        $columnas = $this->columnas_tablas_select(columnas_en_bruto: $columnas_en_bruto,
            columnas_sql: $columnas_sql,  modelo: $modelo, tablas_select: $tablas_select);
        if (errores::$error) {
            return $this->error->error(mensaje: 'Error al integrar columnas', data: $columnas);
        }

        $columnas = $this->columnas_extension(columnas: $columnas, columnas_sql: $columnas_sql,
            extension_estructura: $extension_estructura, modelo: $modelo);
        if (errores::$error) {
            return $this->error->error(mensaje: 'Error al integrar columnas', data: $columnas);
        }

        $columnas = $this->columnas_extra(columnas: $columnas, columnas_sql: $columnas_sql, extra_join: $extra_join,
            modelo: $modelo);
        if (errores::$error) {
            return $this->error->error(mensaje: 'Error al integrar columnas', data: $columnas);
        }

        $columnas = $this->columnas_renombre(columnas: $columnas, columnas_sql: $columnas_sql, modelo: $modelo,
            renombres: $renombres);
        if (errores::$error) {
            return $this->error->error(mensaje: 'Error al integrar columnas', data: $columnas);
        }


        return $columnas;
    }