fix: nested joins alias (#6265)
This commit is contained in:
parent
1f763c81cb
commit
407bedae0a
@ -234,7 +234,12 @@ 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
|
||||||
}
|
}
|
||||||
parentTableName = rel.Name
|
|
||||||
|
if parentTableName != clause.CurrentTable {
|
||||||
|
parentTableName = utils.NestedRelationName(parentTableName, rel.Name)
|
||||||
|
} else {
|
||||||
|
parentTableName = rel.Name
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fromClause.Joins = append(fromClause.Joins, clause.Join{
|
fromClause.Joins = append(fromClause.Joins, clause.Join{
|
||||||
|
@ -329,8 +329,19 @@ func TestJoinArgsWithDB(t *testing.T) {
|
|||||||
func TestNestedJoins(t *testing.T) {
|
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