Merge pull request #280 from ryanss/master

Create tables with fields in same order as defined in struct
This commit is contained in:
Jinzhu 2014-11-17 17:50:09 +08:00
commit 8482d0a121
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 {
var sqls []string
for _, field := range scope.Fields() {
if field.IsNormal {
sqlTag := scope.sqlTagForField(field)
sqls = append(sqls, scope.Quote(field.DBName)+" "+sqlTag)
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 {
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()
return scope