Skip to content

Commit

Permalink
test(do): UpdateFrom use alias with AS
Browse files Browse the repository at this point in the history
  • Loading branch information
tr1v3r committed Nov 11, 2021
1 parent fe2b8e1 commit 9ac6434
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions do.go
Original file line number Diff line number Diff line change
Expand Up @@ -362,17 +362,21 @@ func (d *DO) Preload(field field.RelationField) Dao {
func (d *DO) UpdateFrom(querys ...subQuery) Dao {
var tableName strings.Builder
d.db.Statement.QuoteTo(&tableName, d.db.Statement.Table)
tableName.WriteByte(' ')
d.db.Statement.QuoteTo(&tableName, d.alias)
if d.alias != "" {
tableName.WriteString(" AS ")
d.db.Statement.QuoteTo(&tableName, d.alias)
}
for _, q := range querys {
tableName.WriteByte(',')
if _, ok := q.underlyingDB().Statement.Clauses["SELECT"]; ok || len(q.underlyingDB().Statement.Selects) > 0 {
tableName.WriteString("(" + q.underlyingDB().ToSQL(func(tx *gorm.DB) *gorm.DB { return tx.Find(nil) }) + ")")
} else {
d.db.Statement.QuoteTo(&tableName, q.underlyingDB().Statement.Table)
}
tableName.WriteByte(' ')
d.db.Statement.QuoteTo(&tableName, q.underlyingDO().alias)
if alias := q.underlyingDO().alias; alias != "" {
tableName.WriteString(" AS ")
d.db.Statement.QuoteTo(&tableName, alias)
}
}
return d.getInstance(d.db.Clauses(clause.Update{Table: clause.Table{Name: tableName.String(), Raw: true}}))
}
Expand Down

0 comments on commit 9ac6434

Please sign in to comment.