diff --git a/callbacks/associations.go b/callbacks/associations.go index d7757fc1..2bde8051 100644 --- a/callbacks/associations.go +++ b/callbacks/associations.go @@ -39,10 +39,10 @@ func SaveBeforeAssociations(create bool) func(db *gorm.DB) { switch db.Statement.ReflectValue.Kind() { case reflect.Slice, reflect.Array: var ( + objs = make([]reflect.Value, 0, db.Statement.ReflectValue.Len()) fieldType = rel.Field.FieldType isPtr = fieldType.Kind() == reflect.Ptr ) - objs := make([]reflect.Value, 0, db.Statement.ReflectValue.Len()) if !isPtr { fieldType = reflect.PtrTo(fieldType) diff --git a/callbacks/delete.go b/callbacks/delete.go index f1bfcecb..64dd7236 100644 --- a/callbacks/delete.go +++ b/callbacks/delete.go @@ -69,15 +69,14 @@ func DeleteBeforeAssociations(db *gorm.DB) { } case schema.Many2Many: var ( - modelValue = reflect.New(rel.JoinTable.ModelType).Interface() - table = rel.JoinTable.Table - tx = db.Session(&gorm.Session{NewDB: true}).Model(modelValue).Table(table) + queryConds = make([]clause.Expression, 0, len(rel.References)) + foreignFields = make([]*schema.Field, 0, len(rel.References)) + relForeignKeys = make([]string, 0, len(rel.References)) + modelValue = reflect.New(rel.JoinTable.ModelType).Interface() + table = rel.JoinTable.Table + tx = db.Session(&gorm.Session{NewDB: true}).Model(modelValue).Table(table) ) - queryConds := make([]clause.Expression, 0, len(rel.References)) - foreignFields := make([]*schema.Field, 0, len(rel.References)) - relForeignKeys := make([]string, 0, len(rel.References)) - for _, ref := range rel.References { if ref.OwnPrimaryKey { foreignFields = append(foreignFields, ref.PrimaryKey) diff --git a/callbacks/preload.go b/callbacks/preload.go index 0abaf8af..eafd407d 100644 --- a/callbacks/preload.go +++ b/callbacks/preload.go @@ -27,9 +27,12 @@ func preload(db *gorm.DB, rel *schema.Relationship, conds []interface{}, preload }) if rel.JoinTable != nil { - joinForeignFields := make([]*schema.Field, 0, len(rel.References)) - joinRelForeignFields := make([]*schema.Field, 0, len(rel.References)) - joinForeignKeys := make([]string, 0, len(rel.References)) + + var ( + joinForeignFields = make([]*schema.Field, 0, len(rel.References)) + joinRelForeignFields = make([]*schema.Field, 0, len(rel.References)) + joinForeignKeys = make([]string, 0, len(rel.References)) + ) for _, ref := range rel.References { if ref.OwnPrimaryKey {