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;
}