From 8257509bc43517ea917e800194e1c92481047eaa Mon Sep 17 00:00:00 2001 From: shenbaise9527 Date: Thu, 12 Mar 2020 18:14:44 +0800 Subject: [PATCH] update issues 2927 --- callback_query_preload.go | 6 +++++- scope.go | 12 ++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/callback_query_preload.go b/callback_query_preload.go index a936180a..0d6a2e48 100644 --- a/callback_query_preload.go +++ b/callback_query_preload.go @@ -322,7 +322,9 @@ func (scope *Scope) handleManyToManyPreload(field *Field, conditions []interface 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 { return @@ -330,7 +332,9 @@ func (scope *Scope) handleManyToManyPreload(field *Field, conditions []interface defer rows.Close() columns, _ := rows.Columns() + preScope.db.RowsAffected = 0 for rows.Next() { + preScope.db.RowsAffected++ var ( elem = reflect.New(fieldType).Elem() fields = scope.New(elem.Addr().Interface()).Fields() diff --git a/scope.go b/scope.go index d82cadbc..20144ae5 100644 --- a/scope.go +++ b/scope.go @@ -934,8 +934,6 @@ func (scope *Scope) updatedAttrsWithValues(value interface{}) (results map[strin } func (scope *Scope) row() *sql.Row { - defer scope.trace(NowFunc()) - result := &RowQueryResult{} scope.InstanceSet("row_query_result", result) scope.callCallbacks(scope.db.parent.callbacks.rowQueries) @@ -944,8 +942,6 @@ func (scope *Scope) row() *sql.Row { } func (scope *Scope) rows() (*sql.Rows, error) { - defer scope.trace(NowFunc()) - result := &RowsQueryResult{} scope.InstanceSet("row_query_result", result) scope.callCallbacks(scope.db.parent.callbacks.rowQueries) @@ -994,10 +990,13 @@ func (scope *Scope) pluck(column string, value interface{}) *Scope { scope.Search.Select(column) } + defer scope.trace(NowFunc()) rows, err := scope.rows() if scope.Err(err) == nil { defer rows.Close() + scope.db.RowsAffected = 0 for rows.Next() { + scope.db.RowsAffected++ elem := reflect.New(dest.Type().Elem()).Interface() scope.Err(rows.Scan(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 + defer scope.trace(NowFunc()) scope.Err(scope.row().Scan(value)) + if !scope.HasError() { + scope.db.RowsAffected++ + } + return scope }