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