Create tables with fields in same order as defined in struct

This commit is contained in:
ryanss 2014-11-15 23:31:00 -05:00 committed by jnfeinstein
parent 75819b2bb3
commit 62b447bc9a
1 changed files with 10 additions and 5 deletions

View File

@ -512,13 +512,18 @@ func (scope *Scope) createJoinTable(field *Field) {
func (scope *Scope) createTable() *Scope { func (scope *Scope) createTable() *Scope {
var sqls []string var sqls []string
for _, field := range scope.Fields() { fields := scope.Fields()
scopeType := scope.IndirectValue().Type()
for i := 0; i < scopeType.NumField(); i++ {
for _, field := range scope.fieldFromStruct(scopeType.Field(i), false) {
field = fields[field.DBName]
if field.IsNormal { if field.IsNormal {
sqlTag := scope.sqlTagForField(field) sqlTag := scope.sqlTagForField(field)
sqls = append(sqls, scope.Quote(field.DBName)+" "+sqlTag) sqls = append(sqls, scope.Quote(field.DBName)+" "+sqlTag)
} }
scope.createJoinTable(field) scope.createJoinTable(field)
} }
}
scope.Raw(fmt.Sprintf("CREATE TABLE %v (%v)", scope.QuotedTableName(), strings.Join(sqls, ","))).Exec() scope.Raw(fmt.Sprintf("CREATE TABLE %v (%v)", scope.QuotedTableName(), strings.Join(sqls, ","))).Exec()
return scope return scope
} }