From 75ec40de67154d1354e8237c50467cbe0f33a154 Mon Sep 17 00:00:00 2001 From: liaoqiang Date: Thu, 4 Jun 2015 16:39:07 +0800 Subject: [PATCH] insert_id only support auto_increment field --- model_struct.go | 5 +++++ scope.go | 7 +++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/model_struct.go b/model_struct.go index 10423ae2..4494669d 100644 --- a/model_struct.go +++ b/model_struct.go @@ -40,6 +40,7 @@ type StructField struct { Tag reflect.StructTag Struct reflect.StructField IsForeignKey bool + IsAutoIncrement bool Relationship *Relationship } @@ -148,6 +149,10 @@ func (scope *Scope) GetModelStruct() *ModelStruct { field.HasDefaultValue = true } + if _, ok := sqlSettings["AUTO_INCREMENT"]; ok { + field.IsAutoIncrement = true + } + if value, ok := gormSettings["COLUMN"]; ok { field.DBName = value } else { diff --git a/scope.go b/scope.go index 11bad777..8cf1da3e 100644 --- a/scope.go +++ b/scope.go @@ -112,12 +112,11 @@ func (scope *Scope) HasError() bool { func (scope *Scope) PrimaryField() *Field { if primaryFields := scope.GetModelStruct().PrimaryFields; len(primaryFields) > 0 { - if len(primaryFields) > 1 { - if field, ok := scope.Fields()["id"]; ok { - return field + for i := 0; i < len(primaryFields); i++ { + if primaryFields[i].IsAutoIncrement { + return scope.Fields()[primaryFields[i].DBName] } } - return scope.Fields()[primaryFields[0].DBName] } return nil }