administrador.base.orm.columnas.genera_columnas_tabla - gamboamartin/administrador GitHub Wiki
genera_columnas_tabla
La función genera_columnas_tabla
genera una cadena SQL para seleccionar columnas de una tabla, validando la tabla original y utilizando un modelo para obtener las columnas y el nombre de la tabla. También maneja el uso de columnas en bruto o con alias según sea necesario. El retorno es la cadena SQL generada o un array en caso de error.
Signatura
private function genera_columnas_tabla(bool $columnas_en_bruto,modelo_base $modelo, string $tabla_original, string $tabla_renombrada, array $columnas = array()):array|string
Parámetros
$columnas_en_bruto
(bool): Indicador de si las columnas deben ser usadas en bruto o con alias.
-
- Descripción: Si es true, las columnas se usarán sin alias; de lo contrario, se les asignará un alias.
$modelo
(modelo_base): Instancia del modelo base que se usará para obtener la información de la tabla y columnas.
-
- Descripción: Este objeto proporciona métodos para obtener las columnas y el nombre de la tabla.
$tabla_original
(string): Nombre original de la tabla, que puede estar en el formato de namespace.
-
- Descripción: Este nombre se utilizará para obtener las columnas y el nombre de la tabla.
$tabla_renombrada
(string): Nombre alternativo de la tabla (si es necesario renombrarla).
-
- Descripción: Se usará para generar el nombre de la tabla en la consulta SQL.
$columnas
(array): Arreglo de alias de columnas que deben ser incluidas en la consulta SQL.
-
- Descripción: Si el arreglo no está vacío, solo se procesarán las columnas cuyos alias están en este arreglo.
Retorna
-
string: La cadena SQL generada con las columnas y sus alias.
-
- Descripción: La cadena contiene todas las columnas procesadas y es el resultado final de la función.
-
array: Si ocurre un error (por ejemplo, si $tabla_original está vacío o si hay un problema al obtener las columnas SQL), se retorna un array con un mensaje de error.
-
- Descripción: Este array describe el error ocurrido durante el proceso.
Explicación Detallada
-
Validación del Nombre de la Tabla:
-
- La función reemplaza el prefijo models\ en $tabla_original y valida que no esté vacío. Si lo está, se retorna un array con un mensaje de error.
-
- También se verifica que $tabla_original no sea un número. Si lo es, se retorna un array con un mensaje de error.
-
Obtención de Columnas:
-
- Se llama a la función obten_columnas del modelo para obtener las columnas de la tabla original. Si ocurre un error, se retorna un array con un mensaje de error.
-
Obtención del Nombre de la Tabla:
-
- Se obtiene el nombre de la tabla (original o renombrada) mediante el método obten_nombre_tabla del modelo. Si hay un error, se retorna un array con un mensaje de error.
-
Generación de la Cadena SQL:
-
- Se llama a la función columnas_sql_init para construir la cadena SQL con las columnas y alias. Si ocurre un error, se retorna un array con un mensaje de error.
-
Retorno de la Cadena SQL:
-
- Si todas las operaciones se realizan sin errores, se retorna la cadena SQL generada.
-
Posibles Errores
-
- Nombre de Tabla Vacío: Si $tabla_original está vacío después de eliminar el prefijo models\, la función retorna un array con un mensaje de error.
-
- Nombre de Tabla como Número: Si $tabla_original es un número, se retorna un array con un mensaje de error.
-
- Error al Obtener Columnas: Si hay un problema al obtener las columnas, se retorna un array con un mensaje de error.
-
- Error al Obtener Nombre de la Tabla: Si hay un problema al obtener el nombre de la tabla, se retorna un array con un mensaje de error.
-
- Error al Generar Columnas SQL: Si ocurre un problema al generar la cadena SQL, se retorna un array con un mensaje de error.
Ejemplos
$columnas_en_bruto = false;
$modelo = new ModeloBase();
$tabla_original = 'models\\MiModelo';
$tabla_renombrada = 'mi_modelo';
$columnas = ['mi_tabla_nombre_columna1', 'mi_tabla_nombre_columna2'];
$resultado = $this->genera_columnas_tabla($columnas, $modelo, $tabla_original, $tabla_renombrada);
if (is_string($resultado)) {
echo "Consulta SQL: " . $resultado;
} else {
echo "Error: " . $resultado['mensaje'];
}
Código de la Función
private function genera_columnas_tabla(bool $columnas_en_bruto,modelo_base $modelo, string $tabla_original,
string $tabla_renombrada, array $columnas = array()):array|string
{
$tabla_original = str_replace('models\\','',$tabla_original);
if($tabla_original === ''){
return $this->error->error(mensaje: 'Error tabla original no puede venir vacia', data: $tabla_original,
es_final: true);
}
if(is_numeric($tabla_original)){
return $this->error->error(mensaje: 'Error $tabla_original no puede ser un numero',data: $tabla_original,
es_final: true);
}
$data = $this->obten_columnas( modelo: $modelo, tabla_original: $tabla_original);
if(errores::$error){
return $this->error->error(mensaje: 'Error al obtener columnas',data: $data);
}
$columnas_parseadas = $data->columnas_parseadas;
$tabla_nombre = $modelo->obten_nombre_tabla(tabla_original: $tabla_original,
tabla_renombrada: $tabla_renombrada);
if(errores::$error){
return $this->error->error(mensaje: 'Error al obtener nombre de tabla', data: $tabla_nombre);
}
$columnas_sql = $this->columnas_sql_init(columnas: $columnas, columnas_en_bruto:$columnas_en_bruto,
columnas_parseadas: $columnas_parseadas, tabla_nombre: $tabla_nombre);
if(errores::$error){
return $this->error->error(mensaje: 'Error al obtener columnas sql',data: $columnas_sql);
}
return $columnas_sql;
}