fix: nested joins alias (#6265)
This commit is contained in:
		
							parent
							
								
									1f763c81cb
								
							
						
					
					
						commit
						407bedae0a
					
				| @ -234,8 +234,13 @@ func BuildQuerySQL(db *gorm.DB) { | |||||||
| 								fromClause.Joins = append(fromClause.Joins, genJoinClause(join.JoinType, parentTableName, rel)) | 								fromClause.Joins = append(fromClause.Joins, genJoinClause(join.JoinType, parentTableName, rel)) | ||||||
| 								specifiedRelationsName[nestedAlias] = nil | 								specifiedRelationsName[nestedAlias] = nil | ||||||
| 							} | 							} | ||||||
|  | 
 | ||||||
|  | 							if parentTableName != clause.CurrentTable { | ||||||
|  | 								parentTableName = utils.NestedRelationName(parentTableName, rel.Name) | ||||||
|  | 							} else { | ||||||
| 								parentTableName = rel.Name | 								parentTableName = rel.Name | ||||||
| 							} | 							} | ||||||
|  | 						} | ||||||
| 					} else { | 					} else { | ||||||
| 						fromClause.Joins = append(fromClause.Joins, clause.Join{ | 						fromClause.Joins = append(fromClause.Joins, clause.Join{ | ||||||
| 							Expression: clause.NamedExpr{SQL: join.Name, Vars: join.Conds}, | 							Expression: clause.NamedExpr{SQL: join.Name, Vars: join.Conds}, | ||||||
|  | |||||||
| @ -330,7 +330,18 @@ func TestNestedJoins(t *testing.T) { | |||||||
| 	users := []User{ | 	users := []User{ | ||||||
| 		{ | 		{ | ||||||
| 			Name: "nested-joins-1", | 			Name: "nested-joins-1", | ||||||
| 			Manager:  GetUser("nested-joins-manager-1", Config{Company: true, NamedPet: true}), | 			Manager: &User{ | ||||||
|  | 				Name: "nested-joins-manager-1", | ||||||
|  | 				Company: Company{ | ||||||
|  | 					Name: "nested-joins-manager-company-1", | ||||||
|  | 				}, | ||||||
|  | 				NamedPet: &Pet{ | ||||||
|  | 					Name: "nested-joins-manager-namepet-1", | ||||||
|  | 					Toy: Toy{ | ||||||
|  | 						Name: "nested-joins-manager-namepet-toy-1", | ||||||
|  | 					}, | ||||||
|  | 				}, | ||||||
|  | 			}, | ||||||
| 			NamedPet: &Pet{Name: "nested-joins-namepet-1", Toy: Toy{Name: "nested-joins-namepet-toy-1"}}, | 			NamedPet: &Pet{Name: "nested-joins-namepet-1", Toy: Toy{Name: "nested-joins-namepet-toy-1"}}, | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| @ -352,6 +363,7 @@ func TestNestedJoins(t *testing.T) { | |||||||
| 		Joins("Manager"). | 		Joins("Manager"). | ||||||
| 		Joins("Manager.Company"). | 		Joins("Manager.Company"). | ||||||
| 		Joins("Manager.NamedPet"). | 		Joins("Manager.NamedPet"). | ||||||
|  | 		Joins("Manager.NamedPet.Toy"). | ||||||
| 		Joins("NamedPet"). | 		Joins("NamedPet"). | ||||||
| 		Joins("NamedPet.Toy"). | 		Joins("NamedPet.Toy"). | ||||||
| 		Find(&users2, "users.id IN ?", userIDs).Error; err != nil { | 		Find(&users2, "users.id IN ?", userIDs).Error; err != nil { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Cr
						Cr