administrador.base.orm.modelo_base.genera_columns_final - gamboamartin/administrador GitHub Wiki

genera_columns_final

La función genera_columns_final es una función privada que genera una cadena de columnas SQL final, combinando varias partes de columnas almacenadas en un objeto stdClass. La función itera sobre las propiedades del objeto y utiliza la función columns_final para construir la cadena final de columnas de manera ordenada y sin errores.

Signatura


private function genera_columns_final(stdClass $columns_data): string|array

Parámetros

  • stdClass $columns_data:
    Un objeto stdClass que contiene varias propiedades, cada una de las cuales es una cadena que representa una parte de las columnas SQL que se desean combinar en la cadena final.

Retorno

  • string|array:
    Retorna una cadena que representa las columnas SQL finales, combinadas de manera adecuada. En caso de error durante el proceso, retorna un array de error generado por $this->error->error().

Explicación Detallada

  1. Inicialización de la cadena final:

    • La función inicializa la variable $columns_final como una cadena vacía que se utilizará para almacenar la combinación de todas las columnas SQL.
  2. Iteración sobre las propiedades del objeto:

    • La función itera sobre cada propiedad de $columns_data, que representa una parte de las columnas SQL.
    • Cada cadena de columna es limpiada utilizando trim() para eliminar espacios en blanco al inicio y al final.
  3. Construcción de la cadena final:

    • La función llama a columns_final() para combinar cada parte de las columnas SQL con la cadena acumulada en $columns_final.
    • Si ocurre un error durante la combinación, se genera un mensaje de error y se retorna un array con el mensaje de error.
  4. Retorno de la cadena final:

    • Si todas las columnas se combinan con éxito, la función retorna la cadena $columns_final, que contiene todas las columnas SQL integradas de manera adecuada.

Ejemplos

$columns_data = new stdClass();
$columns_data->columnas_sql = 'id, nombre';
$columns_data->sub_querys_sql = '(SELECT COUNT(*) FROM pedidos WHERE usuario_id = usuarios.id) AS total_pedidos';
$columns_data->columnas_extra_sql = 'email';

$resultado = $this->genera_columns_final($columns_data);

// Resultado esperado:
// 'id, nombre, (SELECT COUNT(*) FROM pedidos WHERE usuario_id = usuarios.id) AS total_pedidos, email'

Código de la Función

private function genera_columns_final(stdClass $columns_data): string|array
    {
        $columns_final = '';
        foreach ($columns_data as $column_data){
            $column_data = trim($column_data);
            $columns_final = trim($columns_final);

            $columns_final = $this->columns_final(column_data: $column_data,columns_final:  $columns_final);
            if(errores::$error){
                return $this->error->error(mensaje: 'Error al integrar columns_final', data: $columns_final);
            }
        }
        return $columns_final;

    }