Skip to content

Commit

Permalink
fix: nested joins alias (#6265)
Browse files Browse the repository at this point in the history
  • Loading branch information
a631807682 committed Apr 26, 2023
1 parent 1f763c8 commit 407beda
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
7 changes: 6 additions & 1 deletion callbacks/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,12 @@ func BuildQuerySQL(db *gorm.DB) {
fromClause.Joins = append(fromClause.Joins, genJoinClause(join.JoinType, parentTableName, rel))
specifiedRelationsName[nestedAlias] = nil
}
parentTableName = rel.Name

if parentTableName != clause.CurrentTable {
parentTableName = utils.NestedRelationName(parentTableName, rel.Name)
} else {
parentTableName = rel.Name
}
}
} else {
fromClause.Joins = append(fromClause.Joins, clause.Join{
Expand Down
16 changes: 14 additions & 2 deletions tests/joins_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -329,8 +329,19 @@ func TestJoinArgsWithDB(t *testing.T) {
func TestNestedJoins(t *testing.T) {
users := []User{
{
Name: "nested-joins-1",
Manager: GetUser("nested-joins-manager-1", Config{Company: true, NamedPet: true}),
Name: "nested-joins-1",
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"}},
},
{
Expand All @@ -352,6 +363,7 @@ func TestNestedJoins(t *testing.T) {
Joins("Manager").
Joins("Manager.Company").
Joins("Manager.NamedPet").
Joins("Manager.NamedPet.Toy").
Joins("NamedPet").
Joins("NamedPet.Toy").
Find(&users2, "users.id IN ?", userIDs).Error; err != nil {
Expand Down

0 comments on commit 407beda

Please sign in to comment.