administrador.modelado.joins.renombres_join.21.25.0 - gamboamartin/administrador GitHub Wiki
renombres_join
La función renombres_join se encarga de generar los renombramientos de tablas y realizar los joins correspondientes en una consulta SQL.
Signatura
private function renombres_join(string $modelo_tabla, array $renombradas, string $tablas): array|string
Parámetros
$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.
$tablas (string): La cadena que representa las tablas ya unidas en la consulta SQL.
Retorna
- string: La función devuelve un string que contiene la cadena de tablas actualizada con los renombramientos y joins.
- array: Si ocurre un error durante la ejecución, devuelve un array con un mensaje de error.
Explicación Detallada
Itera sobre el array de tablas renombradas.
Valida que los datos de renombramiento sean un array.
Realiza el join para cada tabla renombrada y actualiza la cadena de tablas.
Retorna la cadena de tablas actualizada.
Ejemplos
$modelo_tabla = 'modelo_usuarios';
$renombradas = [
'usuarios_renombrados' => [
'enlace' => 'models\\usuarios',
'nombre_original' => 'users'
],
'productos_renombrados' => [
'enlace' => 'models\\productos',
'nombre_original' => 'items'
]
];
$tablas = 'usuarios AS u ON u.id = usuarios_renombrados.user_id';
$resultado = $this->renombres_join($modelo_tabla, $renombradas, $tablas);
// Resultado esperado: 'usuarios AS usuarios_renombrados ON usuarios_renombrados.id = modelo_usuarios.users_id
// LEFT JOIN productos AS productos_renombrados ON productos_renombrados.id = modelo_usuarios.productos_id'
Código de la Función
private function renombres_join(string $modelo_tabla, array $renombradas, string $tablas): array|string
{
$tablas_env = $tablas;
foreach($renombradas as $tabla_renombrada=>$data){
if(!is_array($data)){
return $this->error->error(mensaje: 'Error data debe ser un array', data: $data, es_final: true);
}
$tablas_env = $this->join_renombres(data: $data,modelo_tabla: $modelo_tabla,
tabla_renombrada: $tabla_renombrada, tablas: $tablas);
if(errores::$error){
return $this->error->error(mensaje:'Error al generar join', data:$tablas_env);
}
$tablas = (string)$tablas_env;
}
return $tablas_env;
}