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