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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jinzhu
						Jinzhu