administrador.base.orm.columnas.columnas_tablas_select - gamboamartin/administrador GitHub Wiki
columnas_tablas_select
La función columnas_tablas_select
es una función privada que genera una cadena de columnas SQL para un conjunto de tablas seleccionadas. Dependiendo de los parámetros, puede ajustar las columnas para que sean utilizadas en una consulta SQL, considerando si deben ser procesadas en bruto o si deben ser personalizadas para cada tabla.
Signatura
private function columnas_tablas_select(bool $columnas_en_bruto, array $columnas_sql, modelo_base $modelo, array $tablas_select): array|string
Parámetros
-
bool $columnas_en_bruto
:
Un valor booleano que indica si las columnas deben ser procesadas en su forma original (true
) o si deben ser ajustadas y personalizadas (false
). -
array $columnas_sql
:
Un array que contiene columnas SQL adicionales o personalizadas que pueden ser integradas en la cadena resultante. -
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. -
array $tablas_select
:
Un array que contiene las tablas de las cuales se desean seleccionar columnas. Las claves del array son las tablas y los valores son los nombres de estas tablas.
Retorna
array|string
:
Retorna una cadena que representa las columnas SQL ajustadas para las tablas seleccionadas. En caso de error, retorna un array de error generado por$this->error->error()
.
Explicación Detallada
-
Ajuste de tablas seleccionadas:
- Si
$columnas_en_bruto
estrue
, se ignoran las tablas proporcionadas en$tablas_select
y se utiliza solo la tabla principal del modelo ($modelo->tabla
). - Se inicializa la variable
$columnas
como una cadena vacía para ir acumulando las columnas generadas.
- Si
-
Generación de columnas para cada tabla:
- La función itera sobre cada tabla en
$tablas_select
. Para cada tabla:- Se valida que la clave (
$key
) no sea numérica, ya que las claves de tabla no deben ser números. En caso de ser numérica, se genera un error y se retorna un array con el mensaje de error. - Se llama a la función
genera_columna_tabla()
para generar las columnas ajustadas para la tabla actual. - Si ocurre un error durante la generación de columnas, se genera un mensaje de error y se retorna un array de error.
- Se acumulan las columnas generadas en la variable
$columnas
.
- Se valida que la clave (
- La función itera sobre cada tabla en
-
Retorno de las columnas:
- Si el proceso es exitoso, la función retorna la cadena de columnas SQL ajustadas para su uso en la consulta.
Ejemplos
$columnas_en_bruto = false;
$columnas_sql = ['nombre', 'email'];
$modelo = new modelo_base();
$tablas_select = ['usuarios' => 'usuarios', 'pedidos' => 'pedidos'];
$resultado = $this->columnas_tablas_select($columnas_en_bruto, $columnas_sql, $modelo, $tablas_select);
// Resultado esperado:
// Una cadena con las columnas ajustadas para las tablas 'usuarios' y 'pedidos'.
// Un array de error si ocurre algún problema.
Código de la Función
private function columnas_tablas_select(bool $columnas_en_bruto, array $columnas_sql, modelo_base $modelo,
array $tablas_select): array|string
{
if($columnas_en_bruto){
$tablas_select = array();
$tablas_select[$modelo->tabla] = $modelo->tabla;
}
$columnas = '';
foreach ($tablas_select as $key=>$tabla_select){
if(is_numeric($key)){
return $this->error->error(mensaje: 'Error $key no puede ser un numero',data: $key, es_final: true);
}
$result = $this->genera_columna_tabla(columnas: $columnas, columnas_en_bruto: $columnas_en_bruto,
columnas_sql: $columnas_sql, key: $key, modelo: $modelo);
if(errores::$error){
return $this->error->error(mensaje: 'Error al integrar columnas',data: $result);
}
$columnas = (string)$result;
}
return $columnas;
}