fix:update miss where condition

This commit is contained in:
kinggo 2021-09-30 12:16:46 +08:00
parent 851fea0221
commit 7be135d7be

View File

@ -235,8 +235,8 @@ func ConvertToAssignments(stmt *gorm.Statement) (set clause.Set) {
case reflect.Struct:
set = make([]clause.Assignment, 0, len(stmt.Schema.FieldsByDBName))
for _, dbName := range stmt.Schema.DBNames {
if field := updatingSchema.LookUpField(dbName); field != nil && field.Updatable {
if !field.PrimaryKey || !updatingValue.CanAddr() || stmt.Dest != stmt.Model {
if field := updatingSchema.LookUpField(dbName); field != nil {
if field.Updatable && (!field.PrimaryKey || !updatingValue.CanAddr() || stmt.Dest != stmt.Model) {
if v, ok := selectColumns[field.DBName]; (ok && v) || (!ok && (!restricted || (!stmt.SkipHooks && field.AutoUpdateTime > 0))) {
value, isZero := field.ValueOf(updatingValue)
if !stmt.SkipHooks && field.AutoUpdateTime > 0 {