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 clase modelo_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

  1. 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.
  2. 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.
  3. 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;
    }