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

ajusta_columnas_completas

La función ajusta_columnas_completas ajusta una cadena de columnas SQL existente combinándola con nuevas columnas generadas a partir de un modelo y una tabla específica. Maneja errores potenciales en el proceso y devuelve la cadena resultante de columnas combinadas.

Signatura

private function ajusta_columnas_completas(string $columnas, bool $columnas_en_bruto, array $columnas_sql, modelo_base $modelo, string $tabla, string $tabla_renombrada): array|string

Parámetros

$columnas (string):

    • Descripción: Cadena que contiene las columnas SQL actuales que se ajustarán y combinarán con nuevas columnas.
    • Valor inicial: Puede estar vacío o contener columnas SQL existentes.
    • Ejemplo: 'columna1, columna2'

$columnas_en_bruto (bool):

    • Descripción: Indicador de si las columnas deben ser tratadas en su forma bruta (sin procesar).
    • Valor inicial: true o false.
    • Ejemplo: true

$columnas_sql (array):

    • Descripción: Array que contiene columnas adicionales en su forma SQL que se agregarán a la cadena final.
    • Valor inicial: Un array que puede estar vacío o contener columnas.
    • Ejemplo: ['columna3', 'columna4']

$modelo (modelo_base):

    • Descripción: Instancia del modelo que proporciona la información de la tabla y columnas.
    • Valor inicial: Un objeto de la clase modelo_base.
    • Ejemplo: $modelo

$tabla (string):

    • Descripción: Nombre de la tabla original desde la cual se generarán las columnas SQL.
    • Valor inicial: Nombre de la tabla en formato de cadena.
    • Ejemplo: 'models\mi_tabla'

$tabla_renombrada (string):

    • Descripción: Nombre de la tabla renombrada para el cual se generarán las columnas SQL.
    • Valor inicial: Nombre de la tabla en formato de cadena.
    • Ejemplo: 'mi_tabla_renombrada'

Retorna

  • array|string:

    • Tipo: Array o cadena.
    • Descripción
      • Retorna la cadena resultante de columnas SQL combinadas si no hay errores.
      • Si ocurre un error, retorna un array con un mensaje de error.

Explicación Detallada

  • Validación del Nombre de la Tabla:

    • Elimina el prefijo models\ del nombre de la tabla usando str_replace.
    • Verifica si el nombre de la tabla es numérico:
      • Si es numérico, retorna un mensaje de error indicando que el nombre de la tabla no puede ser un número.
  • Generación de Columnas SQL:

    • Llama a genera_columnas_consulta con los parámetros proporcionados para obtener la cadena de columnas SQL generadas.
    • Maneja errores:
      • Si hay errores en la generación de columnas, retorna un mensaje de error.
  • Integración de Columnas:

    • Llama a integra_columnas_por_data para combinar $columnas con las nuevas columnas generadas.
    • Maneja errores:
      • Si hay errores al integrar las columnas, retorna un mensaje de error.
  • Retorno de la Cadena Final:

    • Si no hay errores:
      • Retorna la cadena de columnas SQL combinadas.

Ejemplos

$columnas = 'columna1, columna2';
$columnas_en_bruto = true;
$columnas_sql = ['columna3', 'columna4'];
$modelo = new modelo_base();
$tabla = 'models\\mi_tabla';
$tabla_renombrada = 'mi_tabla_renombrada';

$resultado = $this->ajusta_columnas_completas(
    $columnas, 
    $columnas_en_bruto, 
    $columnas_sql, 
    $modelo, 
    $tabla, 
    $tabla_renombrada
);

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

Código de la Función

private function ajusta_columnas_completas(string $columnas, bool $columnas_en_bruto, array $columnas_sql,
                                               modelo_base $modelo, string $tabla, 
                                               string $tabla_renombrada): array|string
    {
        $tabla = str_replace('models\\','',$tabla);
        if(is_numeric($tabla)){
            return $this->error->error(mensaje: 'Error $tabla no puede ser un numero',data:  $tabla, es_final: true);
        }

        $resultado_columnas = $this->genera_columnas_consulta(columnas_en_bruto: $columnas_en_bruto,
            modelo: $modelo, tabla_original: $tabla, tabla_renombrada: $tabla_renombrada, columnas: $columnas_sql);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al generar columnas', data: $resultado_columnas);
        }

        $columnas_env = $this->integra_columnas_por_data(columnas: $columnas,resultado_columnas:  $resultado_columnas);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al integrar columnas', data: $columnas_env);
        }

        return $columnas_env;
    }