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

columnas_bd_native

La función columnas_bd_native obtiene las columnas de una tabla de base de datos especificada. Valida el nombre de la tabla, construye una consulta SQL para describir la tabla, y ejecuta la consulta para obtener los resultados. Si ocurre algún error en el proceso, retorna un array con información del error.

Signatura

final public function columnas_bd_native(modelo_base $modelo, string $tabla_bd): array

Parámetros

$modelo (modelo_base): Instancia del modelo base que ejecutará la consulta SQL. $tabla_bd (string): Nombre de la tabla de base de datos de la cual se desea obtener las columnas.

Retorna

  • array: Devuelve un array con los registros de las columnas de la tabla si la ejecución es exitosa.

  • array: Devuelve un array de error si ocurre algún problema durante el proceso.

Explicación Detallada

  • Eliminación de espacios en blanco:

    • La función elimina los espacios en blanco al inicio y al final del nombre de la tabla.
  • Verificación del nombre de la tabla:

    • Si el nombre de la tabla está vacío, se retorna un error indicando que la tabla no puede estar vacía.
    • Si el nombre de la tabla es numérico, se retorna un error indicando que la tabla no puede ser un número.
  • Construcción de la consulta SQL:

    • Se utiliza la función describe_table de la clase sql para construir la consulta SQL que describe la tabla.
  • Ejecución de la consulta SQL:

    • Se utiliza la función ejecuta_consulta del modelo para ejecutar la consulta SQL generada.
  • Verificación del resultado de la consulta:

    • Si la consulta no retorna registros, se retorna un error indicando que no existen columnas en la tabla.
  • Retorno exitoso:

    • Si la ejecución y parseo de la consulta son exitosos, se retorna el array con los registros de las columnas.

Ejemplos

$modelo = new modelo_base();
$tabla_bd = 'usuarios';
$columnas = $this->columnas_bd_native($modelo, $tabla_bd);

if (is_array($columnas) && isset($columnas['error'])) {
    // Manejar error
    print_r($columnas);
} else {
    // Usar las columnas obtenidas
    print_r($columnas);
}

Código de la Función

final public function columnas_bd_native(modelo_base $modelo, string $tabla_bd): array
    {
        $tabla_bd = trim($tabla_bd);
        if($tabla_bd === ''){
            return $this->error->error(mensaje: 'Error $tabla_bd esta 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);
        }

        $sql = (new sql())->describe_table(tabla: $tabla_bd);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al obtener sql', data: $sql);
        }

        $result = $modelo->ejecuta_consulta(consulta: $sql);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al ejecutar sql', data: $result);
        }
        if((int)$result->n_registros === 0){
            return $this->error->error(mensaje: 'Error no existen columnas', data: $result, es_final: true);
        }

        return $result->registros;
    }