Merge 9d73acb064876480e3dd66c4b75ef5df82b59f06 into d7400c2df4ba6eafb8114bc369fd28eacf443dc5
This commit is contained in:
commit
22cc54a946
29
scope.go
29
scope.go
@ -231,10 +231,10 @@ func (scope *Scope) CombinedConditionSql() string {
|
|||||||
// Fields get value's fields
|
// Fields get value's fields
|
||||||
func (scope *Scope) Fields() []*Field {
|
func (scope *Scope) Fields() []*Field {
|
||||||
indirectValue := reflect.Indirect(reflect.ValueOf(scope.Value))
|
indirectValue := reflect.Indirect(reflect.ValueOf(scope.Value))
|
||||||
fields := []*Field{}
|
fields := make(map[string]*Field)
|
||||||
|
|
||||||
if !indirectValue.IsValid() {
|
if !indirectValue.IsValid() {
|
||||||
return fields
|
return []*Field{}
|
||||||
}
|
}
|
||||||
|
|
||||||
scopeTyp := indirectValue.Type()
|
scopeTyp := indirectValue.Type()
|
||||||
@ -244,12 +244,24 @@ func (scope *Scope) Fields() []*Field {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
value := indirectValue.FieldByName(fieldStruct.Name)
|
||||||
|
iface := value.Interface()
|
||||||
|
elem := reflect.Indirect(value)
|
||||||
|
|
||||||
|
if fieldStruct.Anonymous && elem.Kind() == reflect.Struct {
|
||||||
|
for _, f := range scope.New(iface).Fields() {
|
||||||
|
if _, ok := fields[f.Name]; !ok {
|
||||||
|
fields[f.Name] = f
|
||||||
|
}
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
var field Field
|
var field Field
|
||||||
field.Name = fieldStruct.Name
|
field.Name = fieldStruct.Name
|
||||||
field.DBName = ToSnake(fieldStruct.Name)
|
field.DBName = ToSnake(fieldStruct.Name)
|
||||||
|
|
||||||
value := indirectValue.FieldByName(fieldStruct.Name)
|
field.Value = iface
|
||||||
field.Value = value.Interface()
|
|
||||||
field.IsBlank = isBlank(value)
|
field.IsBlank = isBlank(value)
|
||||||
|
|
||||||
// Search for primary key tag identifier
|
// Search for primary key tag identifier
|
||||||
@ -267,7 +279,6 @@ func (scope *Scope) Fields() []*Field {
|
|||||||
field.SqlTag = scope.sqlTagForField(&field)
|
field.SqlTag = scope.sqlTagForField(&field)
|
||||||
|
|
||||||
// parse association
|
// parse association
|
||||||
elem := reflect.Indirect(value)
|
|
||||||
typ := elem.Type()
|
typ := elem.Type()
|
||||||
|
|
||||||
switch elem.Kind() {
|
switch elem.Kind() {
|
||||||
@ -296,10 +307,14 @@ func (scope *Scope) Fields() []*Field {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fields = append(fields, &field)
|
fields[field.Name] = &field
|
||||||
}
|
}
|
||||||
|
|
||||||
return fields
|
field_list := make([]*Field, len(fields))
|
||||||
|
for _, field := range fields {
|
||||||
|
append(field_list, field)
|
||||||
|
}
|
||||||
|
return field_list
|
||||||
}
|
}
|
||||||
|
|
||||||
// Raw set sql
|
// Raw set sql
|
||||||
|
Loading…
x
Reference in New Issue
Block a user