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

columnas_by_table

La función columnas_by_table es una función privada que genera una cadena de columnas SQL basándose en un array de nombres de tablas. Esta función integra y organiza las columnas de acuerdo con las tablas seleccionadas, permitiendo que las consultas SQL se construyan de manera eficiente y precisa.

Signatura


private function columnas_by_table(array $columnas_by_table, bool $columnas_en_bruto, modelo_base $modelo): array|string

Parámetros

  • array $columnas_by_table:
    Un array que contiene los nombres de las tablas que se van a utilizar en la consulta SQL. Cada elemento del array debe ser el nombre de una tabla.

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

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

Retorno

  • array|string:
    Retorna una cadena que representa las columnas SQL generadas para las tablas seleccionadas. En caso de error, retorna un array de error generado por $this->error->error().

Explicación Detallada

  1. Validación del array de tablas:

    • La función verifica si el array $columnas_by_table está vacío (count($columnas_by_table) === 0). Si está vacío, se genera un error que incluye una sugerencia (fix) sobre cómo estructurar correctamente el array de tablas y se retorna un array de error.
  2. Inicialización de columnas y tablas:

    • Se llama a la función init_columnas_by_table() para inicializar la estructura de columnas SQL y tablas seleccionadas basada en el array $columnas_by_table.
    • Si ocurre un error durante la inicialización, se genera un mensaje de error y se retorna un array con el mensaje de error.
  3. Selección de columnas:

    • Se llama a la función columnas_tablas_select() para generar una cadena de columnas SQL basada en las tablas seleccionadas en $init->tablas_select y las columnas SQL inicializadas en $init->columnas_sql.
    • Si ocurre un error en esta etapa, se genera un mensaje de error y se retorna un array con el mensaje de error.
  4. 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.

Ejemplos

$columnas_by_table = ['usuarios', 'pedidos'];
$columnas_en_bruto = false;
$modelo = new modelo_base();

$resultado = $this->columnas_by_table($columnas_by_table, $columnas_en_bruto, $modelo);

// Resultado esperado:
// Una cadena con las columnas SQL generadas para las tablas 'usuarios' y 'pedidos'.
// Un array de error si ocurre algún problema.

Código de la Función

private function columnas_by_table(array $columnas_by_table, bool $columnas_en_bruto,
                                       modelo_base $modelo): array|string
    {
        if(count($columnas_by_table) === 0){
            $fix = 'columnas_by_table debe estar maquetado de la siguiente forma $columnas_by_table[] = "nombre_tabla"';
            return $this->error->error(mensaje: 'Error debe columnas_by_table esta vacia', data: $columnas_by_table,
                es_final: true, fix: $fix);
        }

        $init = $this->init_columnas_by_table(columnas_by_table: $columnas_by_table);
        if (errores::$error) {
            return $this->error->error(mensaje: 'Error al inicializa datos de columnas by table', data: $init);
        }

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