update issues 2927

This commit is contained in:
shenbaise9527 2020-03-12 18:14:44 +08:00
parent 7ea143b548
commit 8257509bc4
2 changed files with 13 additions and 5 deletions

View File

@ -322,7 +322,9 @@ func (scope *Scope) handleManyToManyPreload(field *Field, conditions []interface
preloadDB = preloadDB.Where(preloadConditions[0], preloadConditions[1:]...) preloadDB = preloadDB.Where(preloadConditions[0], preloadConditions[1:]...)
} }
rows, err := preloadDB.Rows() preScope := preloadDB.NewScope(preloadDB.Value)
rows, err := preScope.rows()
defer preScope.trace(NowFunc())
if scope.Err(err) != nil { if scope.Err(err) != nil {
return return
@ -330,7 +332,9 @@ func (scope *Scope) handleManyToManyPreload(field *Field, conditions []interface
defer rows.Close() defer rows.Close()
columns, _ := rows.Columns() columns, _ := rows.Columns()
preScope.db.RowsAffected = 0
for rows.Next() { for rows.Next() {
preScope.db.RowsAffected++
var ( var (
elem = reflect.New(fieldType).Elem() elem = reflect.New(fieldType).Elem()
fields = scope.New(elem.Addr().Interface()).Fields() fields = scope.New(elem.Addr().Interface()).Fields()

View File

@ -934,8 +934,6 @@ func (scope *Scope) updatedAttrsWithValues(value interface{}) (results map[strin
} }
func (scope *Scope) row() *sql.Row { func (scope *Scope) row() *sql.Row {
defer scope.trace(NowFunc())
result := &RowQueryResult{} result := &RowQueryResult{}
scope.InstanceSet("row_query_result", result) scope.InstanceSet("row_query_result", result)
scope.callCallbacks(scope.db.parent.callbacks.rowQueries) scope.callCallbacks(scope.db.parent.callbacks.rowQueries)
@ -944,8 +942,6 @@ func (scope *Scope) row() *sql.Row {
} }
func (scope *Scope) rows() (*sql.Rows, error) { func (scope *Scope) rows() (*sql.Rows, error) {
defer scope.trace(NowFunc())
result := &RowsQueryResult{} result := &RowsQueryResult{}
scope.InstanceSet("row_query_result", result) scope.InstanceSet("row_query_result", result)
scope.callCallbacks(scope.db.parent.callbacks.rowQueries) scope.callCallbacks(scope.db.parent.callbacks.rowQueries)
@ -994,10 +990,13 @@ func (scope *Scope) pluck(column string, value interface{}) *Scope {
scope.Search.Select(column) scope.Search.Select(column)
} }
defer scope.trace(NowFunc())
rows, err := scope.rows() rows, err := scope.rows()
if scope.Err(err) == nil { if scope.Err(err) == nil {
defer rows.Close() defer rows.Close()
scope.db.RowsAffected = 0
for rows.Next() { for rows.Next() {
scope.db.RowsAffected++
elem := reflect.New(dest.Type().Elem()).Interface() elem := reflect.New(dest.Type().Elem()).Interface()
scope.Err(rows.Scan(elem)) scope.Err(rows.Scan(elem))
dest.Set(reflect.Append(dest, reflect.ValueOf(elem).Elem())) dest.Set(reflect.Append(dest, reflect.ValueOf(elem).Elem()))
@ -1027,7 +1026,12 @@ func (scope *Scope) count(value interface{}) *Scope {
} }
} }
scope.Search.ignoreOrderQuery = true scope.Search.ignoreOrderQuery = true
defer scope.trace(NowFunc())
scope.Err(scope.row().Scan(value)) scope.Err(scope.row().Scan(value))
if !scope.HasError() {
scope.db.RowsAffected++
}
return scope return scope
} }