1. add structField.Offset
This commit is contained in:
parent
c3bb6aaa82
commit
1f624664c2
@ -81,6 +81,7 @@ type StructField struct {
|
|||||||
Struct reflect.StructField
|
Struct reflect.StructField
|
||||||
IsForeignKey bool
|
IsForeignKey bool
|
||||||
Relationship *Relationship
|
Relationship *Relationship
|
||||||
|
Offset uintptr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (structField *StructField) clone() *StructField {
|
func (structField *StructField) clone() *StructField {
|
||||||
@ -97,6 +98,7 @@ func (structField *StructField) clone() *StructField {
|
|||||||
TagSettings: map[string]string{},
|
TagSettings: map[string]string{},
|
||||||
Struct: structField.Struct,
|
Struct: structField.Struct,
|
||||||
IsForeignKey: structField.IsForeignKey,
|
IsForeignKey: structField.IsForeignKey,
|
||||||
|
Offset: structField.Offset,
|
||||||
}
|
}
|
||||||
|
|
||||||
if structField.Relationship != nil {
|
if structField.Relationship != nil {
|
||||||
@ -167,6 +169,7 @@ func (scope *Scope) GetModelStruct() *ModelStruct {
|
|||||||
Names: []string{fieldStruct.Name},
|
Names: []string{fieldStruct.Name},
|
||||||
Tag: fieldStruct.Tag,
|
Tag: fieldStruct.Tag,
|
||||||
TagSettings: parseTagSetting(fieldStruct.Tag),
|
TagSettings: parseTagSetting(fieldStruct.Tag),
|
||||||
|
Offset: fieldStruct.Offset,
|
||||||
}
|
}
|
||||||
|
|
||||||
// is ignored field
|
// is ignored field
|
||||||
@ -210,6 +213,7 @@ func (scope *Scope) GetModelStruct() *ModelStruct {
|
|||||||
} else if _, ok := field.TagSettings["EMBEDDED"]; ok || fieldStruct.Anonymous {
|
} else if _, ok := field.TagSettings["EMBEDDED"]; ok || fieldStruct.Anonymous {
|
||||||
// is embedded struct
|
// is embedded struct
|
||||||
for _, subField := range scope.New(fieldValue).GetModelStruct().StructFields {
|
for _, subField := range scope.New(fieldValue).GetModelStruct().StructFields {
|
||||||
|
subField.Offset += fieldStruct.Offset
|
||||||
subField = subField.clone()
|
subField = subField.clone()
|
||||||
subField.Names = append([]string{fieldStruct.Name}, subField.Names...)
|
subField.Names = append([]string{fieldStruct.Name}, subField.Names...)
|
||||||
if prefix, ok := field.TagSettings["EMBEDDED_PREFIX"]; ok {
|
if prefix, ok := field.TagSettings["EMBEDDED_PREFIX"]; ok {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user