From 05f17b9c73ed4f3f263285f7327f98b8cd23e435 Mon Sep 17 00:00:00 2001 From: Yavolte Date: Wed, 6 Aug 2025 10:47:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=9F=E6=88=90ID=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E5=87=BA=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/identity/identified.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/plugins/identity/identified.go b/plugins/identity/identified.go index 95c16d9..6e0e597 100644 --- a/plugins/identity/identified.go +++ b/plugins/identity/identified.go @@ -1,10 +1,11 @@ package identity import ( + "reflect" + "github.com/rs/xid" "gorm.io/gorm" "gorm.io/gorm/schema" - "reflect" ) type Identify struct { @@ -31,10 +32,13 @@ func (identity *Identify) Grant(db *gorm.DB) { if db.Statement.Schema == nil { return } - if field = db.Statement.Schema.LookUpField("ID"); field == nil { - return + for _, column := range db.Statement.Schema.Fields { + if column.PrimaryKey { + field = column + break + } } - if field.DataType != schema.String { + if field == nil || field.DataType != schema.String { return } if db.Statement.ReflectValue.Kind() == reflect.Array || db.Statement.ReflectValue.Kind() == reflect.Slice { @@ -47,7 +51,7 @@ func (identity *Identify) Grant(db *gorm.DB) { } } else { if _, zero := field.ValueOf(db.Statement.Context, db.Statement.ReflectValue); zero { - db.Statement.SetColumn("ID", identity.NextID()) + db.Statement.SetColumn(field.Name, identity.NextID()) } } }