forked from mirror/gorm
Fix omit associations, close #4161
This commit is contained in:
parent
e85b73e5a5
commit
220349ccf2
|
@ -377,7 +377,7 @@ func saveAssociations(db *gorm.DB, rel *schema.Relationship, values interface{},
|
||||||
|
|
||||||
if len(selects) > 0 {
|
if len(selects) > 0 {
|
||||||
tx = tx.Select(selects)
|
tx = tx.Select(selects)
|
||||||
} else if len(selectColumns) > 0 && len(omits) == 0 {
|
} else if restricted && len(omits) == 0 {
|
||||||
tx = tx.Omit(clause.Associations)
|
tx = tx.Omit(clause.Associations)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -398,6 +398,31 @@ func TestMultipleMany2Many(t *testing.T) {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSelfReferentialMany2Many(t *testing.T) {
|
||||||
|
type User struct {
|
||||||
|
ID int32 `gorm:"primaryKey"`
|
||||||
|
Name string
|
||||||
|
CreatedBy int32
|
||||||
|
Creators []User `gorm:"foreignKey:CreatedBy"`
|
||||||
|
AnotherPro interface{} `gorm:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
checkStructRelation(t, &User{}, Relation{
|
||||||
|
Name: "Creators", Type: schema.HasMany, Schema: "User", FieldSchema: "User",
|
||||||
|
References: []Reference{{"ID", "User", "CreatedBy", "User", "", true}},
|
||||||
|
})
|
||||||
|
|
||||||
|
user, err := schema.Parse(&User{}, &sync.Map{}, schema.NamingStrategy{})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to parse schema")
|
||||||
|
}
|
||||||
|
|
||||||
|
relSchema := user.Relationships.Relations["Creators"].FieldSchema
|
||||||
|
if user != relSchema {
|
||||||
|
t.Fatalf("schema should be same, expects %p but got %p", user, relSchema)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type CreatedByModel struct {
|
type CreatedByModel struct {
|
||||||
CreatedByID uint
|
CreatedByID uint
|
||||||
CreatedBy *CreatedUser
|
CreatedBy *CreatedUser
|
||||||
|
|
Loading…
Reference in New Issue