Fix update attrs order
This commit is contained in:
		
							parent
							
								
									d50dbb0896
								
							
						
					
					
						commit
						dacbaa5f02
					
				| @ -199,7 +199,8 @@ func ConvertToAssignments(stmt *gorm.Statement) (set clause.Set) { | |||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if !stmt.UpdatingColumn && stmt.Schema != nil { | 		if !stmt.UpdatingColumn && stmt.Schema != nil { | ||||||
| 			for _, field := range stmt.Schema.FieldsByDBName { | 			for _, dbName := range stmt.Schema.DBNames { | ||||||
|  | 				field := stmt.Schema.LookUpField(dbName) | ||||||
| 				if field.AutoUpdateTime > 0 && value[field.Name] == nil && value[field.DBName] == nil { | 				if field.AutoUpdateTime > 0 && value[field.Name] == nil && value[field.DBName] == nil { | ||||||
| 					if v, ok := selectColumns[field.DBName]; (ok && v) || (!ok && !restricted) { | 					if v, ok := selectColumns[field.DBName]; (ok && v) || (!ok && !restricted) { | ||||||
| 						now := stmt.DB.NowFunc() | 						now := stmt.DB.NowFunc() | ||||||
| @ -222,7 +223,8 @@ func ConvertToAssignments(stmt *gorm.Statement) (set clause.Set) { | |||||||
| 		switch updatingValue.Kind() { | 		switch updatingValue.Kind() { | ||||||
| 		case reflect.Struct: | 		case reflect.Struct: | ||||||
| 			set = make([]clause.Assignment, 0, len(stmt.Schema.FieldsByDBName)) | 			set = make([]clause.Assignment, 0, len(stmt.Schema.FieldsByDBName)) | ||||||
| 			for _, field := range stmt.Schema.FieldsByDBName { | 			for _, dbName := range stmt.Schema.DBNames { | ||||||
|  | 				field := stmt.Schema.LookUpField(dbName) | ||||||
| 				if !field.PrimaryKey || (!updatingValue.CanAddr() || stmt.Dest != stmt.Model) { | 				if !field.PrimaryKey || (!updatingValue.CanAddr() || stmt.Dest != stmt.Model) { | ||||||
| 					if v, ok := selectColumns[field.DBName]; (ok && v) || (!ok && !restricted) { | 					if v, ok := selectColumns[field.DBName]; (ok && v) || (!ok && !restricted) { | ||||||
| 						value, isZero := field.ValueOf(updatingValue) | 						value, isZero := field.ValueOf(updatingValue) | ||||||
|  | |||||||
| @ -384,7 +384,7 @@ func TestGORMValuer(t *testing.T) { | |||||||
| 	}).Statement | 	}).Statement | ||||||
| 
 | 
 | ||||||
| 	if !regexp.MustCompile(`UPDATE .user_with_points. SET .name.=.+,.point.=ST_PointFromText\(.+\)`).MatchString(stmt.SQL.String()) { | 	if !regexp.MustCompile(`UPDATE .user_with_points. SET .name.=.+,.point.=ST_PointFromText\(.+\)`).MatchString(stmt.SQL.String()) { | ||||||
| 		t.Errorf("insert with sql.Expr, but got %v", stmt.SQL.String()) | 		t.Errorf("update with sql.Expr, but got %v", stmt.SQL.String()) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if !reflect.DeepEqual([]interface{}{"jinzhu", "POINT(100 100)"}, stmt.Vars) { | 	if !reflect.DeepEqual([]interface{}{"jinzhu", "POINT(100 100)"}, stmt.Vars) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jinzhu
						Jinzhu