Don't need to delete join table records if no record added

This commit is contained in:
Jinzhu 2015-06-18 18:23:11 +08:00
parent cad0a42875
commit 7e8622f671

View File

@ -131,9 +131,11 @@ func (association *Association) Replace(values ...interface{}) *Association {
addedPrimaryKeys = append(addedPrimaryKeys, primaryKey) addedPrimaryKeys = append(addedPrimaryKeys, primaryKey)
} }
sql := fmt.Sprintf("%v = ? AND %v NOT IN (?)", scope.Quote(relationship.ForeignDBName), scope.Quote(relationship.AssociationForeignDBName)) if len(addedPrimaryKeys) > 0 {
query := scope.NewDB().Where(sql, association.PrimaryKey, addedPrimaryKeys) sql := fmt.Sprintf("%v = ? AND %v NOT IN (?)", scope.Quote(relationship.ForeignDBName), scope.Quote(relationship.AssociationForeignDBName))
association.setErr(relationship.JoinTableHandler.Delete(query, relationship)) query := scope.NewDB().Where(sql, association.PrimaryKey, addedPrimaryKeys)
association.setErr(relationship.JoinTableHandler.Delete(query, relationship))
}
} else { } else {
association.setErr(errors.New("replace only support many to many")) association.setErr(errors.New("replace only support many to many"))
} }