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:]...)
}
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()

View File

@ -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
}