forked from mirror/gorm
Support use clause.Interface as query params
This commit is contained in:
parent
62593cfad0
commit
3f20a543fa
|
@ -179,6 +179,10 @@ func (stmt *Statement) AddVar(writer clause.Writer, vars ...interface{}) {
|
||||||
} else {
|
} else {
|
||||||
stmt.AddVar(writer, v.GormValue(stmt.Context, stmt.DB))
|
stmt.AddVar(writer, v.GormValue(stmt.Context, stmt.DB))
|
||||||
}
|
}
|
||||||
|
case clause.Interface:
|
||||||
|
c := clause.Clause{Name: v.Name()}
|
||||||
|
v.MergeClause(&c)
|
||||||
|
c.Build(stmt)
|
||||||
case clause.Expression:
|
case clause.Expression:
|
||||||
v.Build(stmt)
|
v.Build(stmt)
|
||||||
case driver.Valuer:
|
case driver.Valuer:
|
||||||
|
|
|
@ -445,6 +445,14 @@ func TestToSQL(t *testing.T) {
|
||||||
if DB.Statement.DryRun || DB.DryRun {
|
if DB.Statement.DryRun || DB.DryRun {
|
||||||
t.Fatal("Failed expect DB.DryRun and DB.Statement.ToSQL to be false")
|
t.Fatal("Failed expect DB.DryRun and DB.Statement.ToSQL to be false")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UpdateColumns
|
||||||
|
sql = DB.ToSQL(func(tx *gorm.DB) *gorm.DB {
|
||||||
|
return tx.Raw("SELECT * FROM users ?", clause.OrderBy{
|
||||||
|
Columns: []clause.OrderByColumn{{Column: clause.Column{Name: "id", Raw: true}, Desc: true}},
|
||||||
|
})
|
||||||
|
})
|
||||||
|
assertEqualSQL(t, `SELECT * FROM users ORDER BY id DESC`, sql)
|
||||||
}
|
}
|
||||||
|
|
||||||
// assertEqualSQL for assert that the sql is equal, this method will ignore quote, and dialect specials.
|
// assertEqualSQL for assert that the sql is equal, this method will ignore quote, and dialect specials.
|
||||||
|
|
Loading…
Reference in New Issue