diff --git a/callback_delete.go b/callback_delete.go index 6217706e..e316a9c2 100644 --- a/callback_delete.go +++ b/callback_delete.go @@ -34,13 +34,19 @@ func deleteCallback(scope *Scope) { } if !scope.Search.Unscoped && scope.HasColumn("DeletedAt") { - scope.Raw(fmt.Sprintf( - "UPDATE %v SET deleted_at=%v%v%v", - scope.QuotedTableName(), - scope.AddToVars(NowFunc()), - addExtraSpaceIfExist(scope.CombinedConditionSql()), - addExtraSpaceIfExist(extraOption), - )).Exec() + for _, field := range scope.Fields() { + if field.Name == "DeletedAt" { + scope.Raw(fmt.Sprintf( + "UPDATE %v SET %v=%v%v%v", + scope.QuotedTableName(), + scope.Quote(field.DBName), + scope.AddToVars(NowFunc()), + addExtraSpaceIfExist(scope.CombinedConditionSql()), + addExtraSpaceIfExist(extraOption), + )).Exec() + } + + } } else { scope.Raw(fmt.Sprintf( "DELETE FROM %v%v%v", diff --git a/gorm.iml b/gorm.iml new file mode 100644 index 00000000..5d1355f0 --- /dev/null +++ b/gorm.iml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/scope.go b/scope.go index c36dbb89..bb74eae6 100644 --- a/scope.go +++ b/scope.go @@ -676,11 +676,14 @@ func (scope *Scope) whereSQL() (sql string) { primaryConditions, andConditions, orConditions []string ) - if !scope.Search.Unscoped && scope.HasColumn("deleted_at") { - sql := fmt.Sprintf("%v.deleted_at IS NULL", quotedTableName) - primaryConditions = append(primaryConditions, sql) + if !scope.Search.Unscoped && scope.HasColumn("DeletedAt") { + for _, field := range scope.Fields() { + if field.Name == "DeletedAt" { + sql := fmt.Sprintf("%v.%v IS NULL", quotedTableName, scope.Quote(field.DBName)) + primaryConditions = append(primaryConditions, sql) + } + } } - if !scope.PrimaryKeyZero() { for _, field := range scope.PrimaryFields() { sql := fmt.Sprintf("%v.%v = %v", quotedTableName, scope.Quote(field.DBName), scope.AddToVars(field.Field.Interface()))