Merge branch 'master' of github.com:go-xorm/xorm

This commit is contained in:
Lunny Xiao 2016-03-14 09:41:34 +08:00
commit 9968697225
1 changed files with 8 additions and 12 deletions

View File

@ -967,23 +967,18 @@ func (engine *Engine) mapType(v reflect.Value) *core.Table {
continue
}
if strings.ToUpper(tags[0]) == "EXTENDS" {
if fieldValue.Kind() == reflect.Struct {
parentTable := engine.mapType(fieldValue)
for _, col := range parentTable.Columns() {
col.FieldName = fmt.Sprintf("%v.%v", t.Field(i).Name, col.FieldName)
table.AddColumn(col)
}
continue
} else if fieldValue.Kind() == reflect.Ptr {
switch fieldValue.Kind() {
case reflect.Ptr:
f := fieldValue.Type().Elem()
if f.Kind() == reflect.Struct {
fieldPtr := fieldValue
fieldValue = fieldValue.Elem()
if !fieldValue.IsValid() || fieldValue.IsNil() {
if !fieldValue.IsValid() || fieldPtr.IsNil() {
fieldValue = reflect.New(f).Elem()
}
}
fallthrough
case reflect.Struct:
parentTable := engine.mapType(fieldValue)
for _, col := range parentTable.Columns() {
col.FieldName = fmt.Sprintf("%v.%v", t.Field(i).Name, col.FieldName)
@ -991,8 +986,9 @@ func (engine *Engine) mapType(v reflect.Value) *core.Table {
}
continue
default:
//TODO: warning
}
//TODO: warning
}
indexNames := make(map[string]int)