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,12 +512,17 @@ 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()
if field.IsNormal { scopeType := scope.IndirectValue().Type()
sqlTag := scope.sqlTagForField(field) for i := 0; i < scopeType.NumField(); i++ {
sqls = append(sqls, scope.Quote(field.DBName)+" "+sqlTag) for _, field := range scope.fieldFromStruct(scopeType.Field(i), false) {
field = fields[field.DBName]
if field.IsNormal {
sqlTag := scope.sqlTagForField(field)
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