administrador.modelado.joins.tablas.21.25.0 - gamboamartin/administrador GitHub Wiki
tablas
La función tablas se encarga de generar las tablas completas para una consulta SQL, incluyendo las extensiones de estructura y los renombramientos necesarios.
Signatura
final public function tablas(array $columnas, array $extension_estructura, array $extra_join, string $modelo_tabla, array $renombradas, string $tabla): array|string
Parámetros
$columnas (array): Un array que contiene las columnas de la tabla.
$extension_estructura (array): Un array que contiene las extensiones de estructura para realizar joins adicionales.
$extra_join (array): Un array que contiene joins adicionales especificados por el usuario.
$modelo_tabla (string): El nombre del modelo de la tabla.
$renombradas (array): Un array que contiene los nombres de las tablas renombradas y sus respectivos datos para el join.
$tabla (string): El nombre de la tabla principal.
Retorna
- string: La función devuelve un string que contiene la cadena de tablas completas generada para la consulta SQL.
- array: Si ocurre un error durante la ejecución, devuelve un array con un mensaje de error.
Explicación Detallada
Verifica que el nombre de la tabla no esté vacío.
Obtiene las tablas completas con las columnas especificadas.
Aplica las extensiones de estructura a las tablas obtenidas.
Aplica joins adicionales especificados por el usuario.
Aplica renombramientos a las tablas.
Retorna las tablas completas generadas.
Ejemplos
$columnas = ['id', 'nombre', 'apellido'];
$extension_estructura = [
'extension_1' => [
'enlace' => 'models\\extension1',
'nombre_original' => 'extension1_table'
],
'extension_2' => [
'enlace' => 'models\\extension2',
'nombre_original' => 'extension2_table'
]
];
$extra_join = [
'join_extra' => [
'enlace' => 'models\\extra_table',
'nombre_original' => 'extra_table'
]
];
$modelo_tabla = 'modelo_usuarios';
$renombradas = [
'usuarios_renombrados' => [
'enlace' => 'models\\usuarios',
'nombre_original' => 'users'
]
];
$tabla = 'usuarios';
$resultado = $this->tablas($columnas, $extension_estructura, $extra_join, $modelo_tabla, $renombradas, $tabla);
// Resultado esperado: 'usuarios AS usuarios LEFT JOIN extension1_table AS extension1_table ON extension1_table.id = usuarios.extension1_id
// LEFT JOIN extension2_table AS extension2_table ON extension2_table.id = usuarios.extension2_id
// LEFT JOIN extra_table AS extra_table ON extra_table.id = usuarios.extra_table_id
// LEFT JOIN usuarios_renombrados AS usuarios_renombrados ON usuarios_renombrados.id = modelo_usuarios.users_id'
Código de la Función
final public function tablas(array $columnas, array $extension_estructura, array $extra_join, string $modelo_tabla,
array $renombradas, string $tabla): array|string
{
$tabla = trim($tabla);
if($tabla === ''){
return $this->error->error(mensaje: 'La tabla no puede ir vacia',data: $tabla, es_final: true);
}
$tablas = $this->obten_tablas_completas(columnas_join: $columnas, tabla: $tabla);
if(errores::$error){
return $this->error->error(mensaje: 'Error al obtener tablas',data: $tablas);
}
$tablas = $this->extensiones_join(extension_estructura: $extension_estructura, modelo_tabla: $modelo_tabla,
tablas: $tablas);
if(errores::$error){
return $this->error->error(mensaje: 'Error al generar join',data: $tablas);
}
$tablas = $this->extensiones_join(extension_estructura: $extra_join, modelo_tabla: $modelo_tabla,
tablas: $tablas);
if(errores::$error){
return $this->error->error(mensaje: 'Error al generar join',data: $tablas);
}
$tablas = $this->renombres_join(modelo_tabla:$modelo_tabla,renombradas: $renombradas, tablas: $tablas);
if(errores::$error){
return $this->error->error(mensaje: 'Error al generar join', data: $tablas);
}
return $tablas;
}