administrador.modelado.joins.join_renombres.21.25.0 - gamboamartin/administrador GitHub Wiki
join_renombres
La función join_renombres se encarga de realizar un join entre tablas, considerando el renombramiento de una de ellas, en una consulta SQL.
Signatura
private function join_renombres(array $data, string $modelo_tabla, string $tabla_renombrada, string $tablas): array|string
Parámetros
$data (array): Un array que contiene los datos necesarios para realizar el join.
$modelo_tabla (string): El nombre del modelo de la tabla.
$tabla_renombrada (string): El nombre de la tabla renombrada.
$tablas (string): La cadena que representa las tablas ya unidas en la consulta SQL.
Retorna
- array: La función devuelve un array que contiene la cadena de tablas con el nuevo join.
- array: Si ocurre un error durante la ejecución, devuelve un array con un mensaje de error.
Explicación Detallada
Elimina el namespace del nombre de la tabla renombrada.
Valida las claves necesarias para el renombramiento de la tabla.
Valida las claves SQL necesarias.
Genera la cláusula de join y la agrega a la cadena de tablas.
Retorna la cadena de tablas con el nuevo join.
Ejemplos
$data = [
'enlace' => 'models\\usuarios',
'nombre_original' => 'users'
];
$modelo_tabla = 'modelo_usuarios';
$tabla_renombrada = 'usuarios_renombrados';
$tablas = 'usuarios AS u ON u.id = usuarios_renombrados.user_id';
$resultado = $this->join_renombres($data, $modelo_tabla, $tabla_renombrada, $tablas);
// Resultado esperado: 'usuarios AS usuarios_renombrados ON usuarios_renombrados.id = modelo_usuarios.users_id'
Código de la Función
private function join_renombres(array $data, string $modelo_tabla, string $tabla_renombrada,
string $tablas): array|string
{
$namespace = 'models\\';
$tabla_renombrada = str_replace($namespace,'',$tabla_renombrada);
$valida = (new validaciones())->valida_keys_renombre(data:$data,tabla_renombrada: $tabla_renombrada);
if(errores::$error){
return $this->error->error(mensaje: 'Error al validar datos', data: $valida);
}
$data['nombre_original'] = trim($data['nombre_original']);
$tabla_renombrada = trim($tabla_renombrada);
$data['enlace'] = str_replace($namespace,'',$data['enlace'] );
$valida = (new validaciones())->valida_keys_sql(data: $data,tabla: $modelo_tabla);
if(errores::$error){
return $this->error->error(mensaje:'Error al validar data',data: $valida);
}
$left_join = $this->left_join_str(tablas: $tablas);
if(errores::$error){
return $this->error->error(mensaje:'Error al generar join', data:$left_join);
}
$tablas.=$left_join;
$str_join = $this->string_sql_join(data: $data, modelo_tabla: $modelo_tabla, tabla: $data['nombre_original'],
tabla_renombrada: $tabla_renombrada);
if(errores::$error){
return $this->error->error(mensaje:'Error al generar sql',data: $str_join);
}
$tablas .= ' '.$str_join;
return $tablas;
}