administrador.base.orm.columnas.columnas_extension - gamboamartin/administrador GitHub Wiki
columnas_extension
La función columnas_extension
es una función privada que genera una cadena de columnas SQL extendidas para ser utilizadas en una consulta, basándose en una estructura de extensión proporcionada. Ajusta las columnas según las necesidades específicas de cada tabla en la estructura de extensión, permitiendo la personalización y adaptación de la consulta SQL.
Signatura
private function columnas_extension(string $columnas, array $columnas_sql, array $extension_estructura,modelo_base $modelo): array|string
Parámetros
-
string $columnas
:
Una cadena que contiene las columnas SQL iniciales que se deben procesar y ajustar para su uso en la consulta SQL. -
array $columnas_sql
:
Un array que contiene columnas SQL adicionales o personalizadas que pueden ser integradas en la cadena resultante. -
array $extension_estructura
:
Un array que define la estructura de extensión para la consulta SQL. Las claves del array son los nombres de las tablas y los valores contienen los datos específicos relacionados con la tabla. -
modelo_base $modelo
:
Una instancia de la clasemodelo_base
que representa el modelo de datos sobre el que se está trabajando. Este objeto proporciona los metadatos y atributos necesarios para ajustar las columnas.
Retorna
array|string
:
Retorna una cadena que representa las columnas SQL ajustadas y extendidas para su uso en la consulta. En caso de error, retorna un array de error generado por$this->error->error()
.
Explicación Detallada
-
Inicialización de columnas:
- Se inicia el proceso copiando el valor de
$columnas
a la variable$columnas_env
, que se utilizará para acumular las columnas ajustadas.
- Se inicia el proceso copiando el valor de
-
Procesamiento de la estructura de extensión:
- La función itera sobre cada tabla definida en
$extension_estructura
. Para cada tabla:- Se elimina el prefijo
models\
del nombre de la tabla para asegurar que sea correcto para su uso en la consulta SQL. - Se valida que el nombre de la tabla no sea numérico. Si es numérico, se genera un error y se retorna un array con el mensaje de error.
- Se invoca la función
ajusta_columnas_completas()
para ajustar las columnas proporcionadas en$columnas_env
y$columnas_sql
para la tabla actual. - Si ocurre un error durante el ajuste de columnas, se genera un mensaje de error y se retorna un array de error.
- Se elimina el prefijo
- La función itera sobre cada tabla definida en
-
Retorno de las columnas ajustadas:
- Si el proceso es exitoso, la función retorna la cadena de columnas SQL ajustadas y extendidas.
Ejemplos
$columnas = "id, nombre, email";
$columnas_sql = ['nombre_completo'];
$extension_estructura = [
'usuarios' => ['campo1', 'campo2'],
'pedidos' => ['campo3', 'campo4']
];
$modelo = new modelo_base();
$resultado = $this->columnas_extension($columnas, $columnas_sql, $extension_estructura, $modelo);
// Resultado esperado:
// Una cadena con las columnas ajustadas y extendidas para las tablas 'usuarios' y 'pedidos'.
// Un array de error si ocurre algún problema.
Código de la Función
private function columnas_extension(string $columnas, array $columnas_sql, array $extension_estructura,
modelo_base $modelo): array|string
{
$columnas_env = $columnas;
foreach($extension_estructura as $tabla=>$data){
$tabla = str_replace('models\\','',$tabla);
if(is_numeric($tabla)){
return $this->error->error(mensaje: 'Error ingrese un array valido '.$tabla,
data: $extension_estructura, es_final: true);
}
$columnas_env = $this->ajusta_columnas_completas(columnas: $columnas_env, columnas_en_bruto: false,
columnas_sql: $columnas_sql, modelo: $modelo, tabla: $tabla, tabla_renombrada: '');
if(errores::$error){
return $this->error->error(mensaje:'Error al integrar envio', data:$columnas_env);
}
}
return $columnas_env;
}