Don't include Order for counting sql

This commit is contained in:
Jinzhu 2015-08-05 15:58:11 +08:00
parent 6b8f2fcab8
commit d21eed4b66
2 changed files with 13 additions and 8 deletions

View File

@ -206,15 +206,19 @@ func (scope *Scope) whereSql() (sql string) {
return return
} }
var hasCountRegexp = regexp.MustCompile(`(?i)count(.+)`)
func (scope *Scope) selectSql() string { func (scope *Scope) selectSql() string {
if len(scope.Search.selects) == 0 { if len(scope.Search.selects) == 0 {
return "*" return "*"
} }
sql := scope.buildSelectQuery(scope.Search.selects)
scope.Search.countingQuery = hasCountRegexp.MatchString(sql)
return scope.buildSelectQuery(scope.Search.selects) return scope.buildSelectQuery(scope.Search.selects)
} }
func (scope *Scope) orderSql() string { func (scope *Scope) orderSql() string {
if len(scope.Search.orders) == 0 { if len(scope.Search.orders) == 0 || scope.Search.countingQuery {
return "" return ""
} }
return " ORDER BY " + strings.Join(scope.Search.orders, ",") return " ORDER BY " + strings.Join(scope.Search.orders, ",")
@ -468,7 +472,7 @@ func (scope *Scope) related(value interface{}, foreignKeys ...string) *Scope {
/** /**
Return the table options string or an empty string if the table options does not exist Return the table options string or an empty string if the table options does not exist
*/ */
func (scope *Scope) getTableOptions() string{ func (scope *Scope) getTableOptions() string {
tableOptions, ok := scope.Get("gorm:table_options") tableOptions, ok := scope.Get("gorm:table_options")
if !ok { if !ok {
return "" return ""

View File

@ -21,6 +21,7 @@ type search struct {
tableName string tableName string
raw bool raw bool
Unscoped bool Unscoped bool
countingQuery bool
} }
type searchPreload struct { type searchPreload struct {