From 4562d6124ff9cf0dc2b18eb68ecf3e6ab38c3cff Mon Sep 17 00:00:00 2001 From: jiangyong27 Date: Wed, 13 Dec 2023 11:58:51 +0800 Subject: [PATCH] model column --- gorm.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gorm.go b/gorm.go index a2259fa..8f753f5 100644 --- a/gorm.go +++ b/gorm.go @@ -5,6 +5,7 @@ import ( log "github.com/sirupsen/logrus" "gorm.io/gorm" "gorm.io/gorm/logger" + "reflect" "time" ) @@ -41,3 +42,28 @@ func (d *GORMLogger) Trace(ctx context.Context, begin time.Time, fc func() (sql } } } + +func ModelInitColumn(md interface{}, col interface{}) { + modelValue := reflect.TypeOf(md).Elem() + modelCol := reflect.ValueOf(col).Elem() + for i := 0; i < modelValue.NumField(); i++ { + field := modelValue.Field(i) + fValue := modelCol.FieldByName(field.Name) + if fValue.IsValid() && fValue.CanSet() { + fValue.Set(reflect.ValueOf(SnakeString(field.Name))) + } + } +} + +func ModelFieldValue(md interface{}, fields ...string) map[string]interface{} { + data := make(map[string]interface{}) + obj := reflect.ValueOf(md).Elem() + + for _, f := range fields { + val := obj.FieldByName(CamelString(f)) + if val.IsValid() { + data[f] = val.Interface() + } + } + return data +}