Support `FullSaveAssociations` for association mode, close #4010

This commit is contained in:
Jinzhu 2021-01-29 16:40:07 +08:00
parent 6e3ac74b7e
commit 7598204dc3
2 changed files with 12 additions and 3 deletions

View File

@ -385,7 +385,9 @@ func (association *Association) saveAssociation(clear bool, values ...interface{
for name, ok := range selectColumns {
columnName := ""
if strings.HasPrefix(name, association.Relationship.Name) {
columnName = strings.TrimPrefix(name, association.Relationship.Name)
if columnName = strings.TrimPrefix(name, association.Relationship.Name); columnName == ".*" {
columnName = name
}
} else if strings.HasPrefix(name, clause.Associations) {
columnName = name
}
@ -404,7 +406,15 @@ func (association *Association) saveAssociation(clear bool, values ...interface{
selectedSaveColumns = append(selectedSaveColumns, ref.ForeignKey.Name)
}
}
associationDB := association.DB.Session(&Session{}).Model(nil).Select(selectedSaveColumns).Session(&Session{})
associationDB := association.DB.Session(&Session{}).Model(nil)
if !association.DB.FullSaveAssociations {
associationDB.Select(selectedSaveColumns)
}
if len(omitColumns) > 0 {
associationDB.Omit(omitColumns...)
}
associationDB = associationDB.Session(&Session{})
switch reflectValue.Kind() {
case reflect.Slice, reflect.Array:

View File

@ -167,7 +167,6 @@ func (db *DB) Session(config *Session) *DB {
clone: 1,
}
)
if config.CreateBatchSize > 0 {
tx.Config.CreateBatchSize = config.CreateBatchSize
}