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 objetostdClass
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
-
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.
- La función inicializa la variable
-
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.
- La función itera sobre cada propiedad de
-
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.
- La función llama a
-
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.
- Si todas las columnas se combinan con éxito, la función retorna la cadena
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;
}