administrador.base.orm.columnas.obten_columnas - gamboamartin/administrador GitHub Wiki
obten_columnas
La función obten_columnas se encarga de obtener y asignar las columnas de una tabla de la base de datos a un modelo dado. Realiza la limpieza y validación del nombre de la tabla, asigna las columnas a la sesión si no están ya asignadas, y maneja los errores de manera estructurada.
Signatura
private function obten_columnas(modelo_base $modelo, string $tabla_original):array|stdClass
Parámetros
$modelo
(modelo_base): Una instancia de la clase modelo_base que representa el modelo de la base de datos.$tabla_original
(string): El nombre original de la tabla de la base de datos, posiblemente con un namespace (models), que se desea procesar para obtener sus columnas.
Retorna
- Tipo:
array
- Descripción:
-
- Retorna un array con las columnas obtenidas y almacenadas en el modelo si la operación es exitosa.
-
- En caso de error, retorna un stdClass con un array que contiene la información del error.
Explicación Detallada
-
Limpieza del Nombre de la Tabla:
-
- Se elimina cualquier referencia al namespace models\ en el nombre de la tabla utilizando str_replace().
-
- Se aplica trim() para eliminar espacios en blanco al inicio y al final del nombre de la tabla:
-
Validación del Nombre de la Tabla:
-
- Se valida si $tabla_bd (que es la versión limpia de $tabla_original) está vacío. Si es así, se genera un error y se retorna un array con el error.
-
- Se valida si $tabla_bd es numérico. Si lo es, también se genera un error y se retorna un array con el error.
-
Asignación de Columnas en la Sesión:
-
- Se llama a la función asigna_columnas_en_session() para intentar asignar las columnas de la tabla a la sesión:
-
- Si ocurre un error durante esta operación (verificado por errores::$error), se genera y retorna un array con el error.
-
Generación y Asignación de Columnas si no Están en la Sesión:
-
- Si las columnas no fueron asignadas en la sesión (!$se_asignaron_columnas), se llama a asigna_columnas_session_new() para generarlas y asignarlas.
-
Retorno de las Columnas:
-
- Finalmente, la función retorna el array de columnas almacenadas en el atributo data_columnas del modelo:
-
Manejo de Errores
-
- Los errores se manejan mediante el método $this->error->error(), que retorna un array con información detallada del error.
-
- Si ocurre un error, la función retorna inmediatamente con el array de error y no procede con el flujo normal.
Ejemplos
$modelo = new modelo_base();
$tabla_original = "models\\usuarios";
$columnas = $this->obten_columnas($modelo, $tabla_original);
if (is_array($columnas)) {
// Las columnas se obtuvieron y se asignaron correctamente al modelo
} else {
// Manejo del error
print_r($columnas); // Imprimir los detalles del error
}
Código de la Función
private function obten_columnas(modelo_base $modelo, string $tabla_original):array|stdClass
{
$tabla_original = trim(str_replace('models\\','',$tabla_original));
$tabla_bd = $tabla_original;
if($tabla_bd === ''){
return $this->error->error(mensaje: 'Error tabla original no puede venir vacia',data: $tabla_bd,
es_final: true);
}
if(is_numeric($tabla_bd)){
return $this->error->error(mensaje: 'Error $tabla_bd no puede ser un numero',data: $tabla_bd,
es_final: true);
}
$se_asignaron_columnas = $this->asigna_columnas_en_session(modelo: $modelo, tabla_bd: $tabla_bd);
if(errores::$error){
return $this->error->error(mensaje: 'Error al asignar columnas', data: $se_asignaron_columnas);
}
if(!$se_asignaron_columnas){
$columnas_field = $this->asigna_columnas_session_new(modelo:$modelo, tabla_bd: $tabla_bd);
if(errores::$error){
return $this->error->error(mensaje: 'Error al obtener columnas', data: $columnas_field);
}
}
return $modelo->data_columnas;
}