forked from mirror/gorm
Fix Exec with raw string
This commit is contained in:
parent
f8e4e16e09
commit
5330572c25
5
main.go
5
main.go
|
@ -5,6 +5,7 @@ import (
|
|||
"errors"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
@ -287,7 +288,9 @@ func (s *DB) Raw(sql string, values ...interface{}) *DB {
|
|||
|
||||
func (s *DB) Exec(sql string, values ...interface{}) *DB {
|
||||
scope := s.clone().NewScope(nil)
|
||||
scope.Raw(scope.buildWhereCondition(map[string]interface{}{"query": sql, "args": values}))
|
||||
generatedSql := scope.buildWhereCondition(map[string]interface{}{"query": sql, "args": values})
|
||||
generatedSql = strings.TrimSuffix(strings.TrimPrefix(generatedSql, "("), ")")
|
||||
scope.Raw(generatedSql)
|
||||
return scope.Exec().db
|
||||
}
|
||||
|
||||
|
|
2
mysql.go
2
mysql.go
|
@ -38,7 +38,7 @@ func (d *mysql) SqlTag(value reflect.Value, size int) string {
|
|||
}
|
||||
case reflect.Struct:
|
||||
if value.Type() == timeType {
|
||||
return "timestamp"
|
||||
return "timestamp NULL"
|
||||
}
|
||||
default:
|
||||
if _, ok := value.Interface().([]byte); ok {
|
||||
|
|
|
@ -23,7 +23,7 @@ func (scope *Scope) buildWhereCondition(clause map[string]interface{}) (str stri
|
|||
if regexp.MustCompile("^\\s*\\d+\\s*$").MatchString(value) {
|
||||
id, _ := strconv.Atoi(value)
|
||||
return scope.primaryCondiation(scope.AddToVars(id))
|
||||
} else {
|
||||
} else if value != "" {
|
||||
str = fmt.Sprintf("(%v)", value)
|
||||
}
|
||||
case int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64:
|
||||
|
@ -300,7 +300,7 @@ func (s *Scope) joinsSql() string {
|
|||
|
||||
func (scope *Scope) prepareQuerySql() {
|
||||
if scope.Search.Raw {
|
||||
scope.Raw(strings.TrimLeft(scope.CombinedConditionSql(), "WHERE "))
|
||||
scope.Raw(strings.TrimRight(strings.TrimLeft(scope.CombinedConditionSql(), "WHERE ("), ")"))
|
||||
} else {
|
||||
scope.Raw(fmt.Sprintf("SELECT %v %v FROM %v %v", scope.topSql(), scope.selectSql(), scope.QuotedTableName(), scope.CombinedConditionSql()))
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue