administrador.base.orm.columnas.columnas_sql_init - gamboamartin/administrador GitHub Wiki
columnas_sql_init
La función columnas_sql_init
genera una cadena SQL que incluye una lista de columnas, utilizando alias si es necesario. La función valida que el nombre de la tabla no esté vacío y procesa cada columna en base a los parámetros proporcionados. El retorno es la cadena SQL generada o un array en caso de error.
Signatura
private function columnas_sql_init(array $columnas, bool $columnas_en_bruto, array $columnas_parseadas, string $tabla_nombre):array|string
Parámetros
$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.
$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.
$columnas_parseadas
(array): Arreglo de nombres de columnas a ser incluidas en la consulta SQL.
-
- Descripción: Estas columnas serán procesadas para formar la cadena SQL.
$tabla_nombre
(string): Nombre de la tabla que se usará como prefijo para las columnas.
-
- Descripción: Se usará para formar los alias de las columnas y debe ser una cadena no vacía.
Retorna
-
string: La cadena SQL generada con las columnas y sus alias.
-
- Descripción: La cadena contiene todas las columnas procesadas, con o sin alias, y es el resultado final de la función.
-
array: Si ocurre un error (por ejemplo, si $tabla_nombre 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 verifica que $tabla_nombre no esté vacío. Si lo está, se retorna un array con un mensaje de error.
-
Inicialización de la Cadena SQL:
-
- Se inicializa una cadena vacía $columnas_sql para construir la consulta SQL.
-
Procesamiento de Columnas:
-
- Se itera sobre cada columna en $columnas_parseadas. Para cada columna, se genera un alias usando el nombre de la tabla y el nombre de la columna.
-
- Si $columnas no está vacío y el alias de la columna no está en el arreglo $columnas, se omite la columna.
-
Generación de la Consulta SQL:
-
- Se llama a la función columnas_sql para cada columna, añadiendo la columna y su alias (si corresponde) a la cadena SQL.
-
- Si ocurre un error al llamar a columnas_sql, se retorna un array con un mensaje de error.
-
Retorno de la Cadena SQL:
-
- Si todas las columnas se procesan sin errores, la cadena SQL final es retornada.
-
Posibles Errores
-
- Nombre de Tabla Vacío: Si $tabla_nombre está vacío, la función retorna un array con un mensaje de error.
-
- Error en la Generación de Columnas SQL: Si ocurre un problema al obtener la cadena SQL para las columnas, se retorna un array con un mensaje de error.
Ejemplos
$columnas = ['mi_tabla_nombre_columna1', 'mi_tabla_nombre_columna2'];
$columnas_en_bruto = false;
$columnas_parseadas = ['nombre_columna1', 'nombre_columna2'];
$tabla_nombre = 'mi_tabla';
$resultado = $this->columnas_sql_init($columnas, $columnas_en_bruto, $columnas_parseadas, $tabla_nombre);
if (is_string($resultado)) {
echo "Consulta SQL: " . $resultado;
} else {
echo "Error: " . $resultado['mensaje'];
}
Código de la Función
private function columnas_sql_init(array $columnas, bool $columnas_en_bruto, array $columnas_parseadas,
string $tabla_nombre):array|string
{
if($tabla_nombre === ''){
return $this->error->error(mensaje: 'Error $tabla_nombre no puede venir vacia',data: $tabla_nombre,
es_final: true);
}
$columnas_sql = '';
foreach($columnas_parseadas as $columna_parseada){
$alias_columnas = $tabla_nombre.'_'.$columna_parseada;
if((count($columnas) > 0) && !in_array($alias_columnas, $columnas, true)) {
continue;
}
$columnas_sql = $this->columnas_sql(alias_columnas: $alias_columnas, columna_parseada: $columna_parseada,
columnas_en_bruto: $columnas_en_bruto, columnas_sql: $columnas_sql, tabla_nombre: $tabla_nombre);
if(errores::$error){
return $this->error->error(mensaje: 'Error al obtener columnas sql',data: $columnas_sql);
}
}
return $columnas_sql;
}