retrieving gorm object support pointer
This commit is contained in:
		
							parent
							
								
									7f198ead0e
								
							
						
					
					
						commit
						470a1b3933
					
				@ -94,6 +94,11 @@ func (p *processor) Execute(db *DB) {
 | 
			
		||||
	if stmt.Dest != nil {
 | 
			
		||||
		stmt.ReflectValue = reflect.ValueOf(stmt.Dest)
 | 
			
		||||
		for stmt.ReflectValue.Kind() == reflect.Ptr {
 | 
			
		||||
			if stmt.ReflectValue.IsNil() {
 | 
			
		||||
				stmt.ReflectValue.Set(reflect.New(stmt.ReflectValue.Type().Elem()))
 | 
			
		||||
				break
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			stmt.ReflectValue = stmt.ReflectValue.Elem()
 | 
			
		||||
		}
 | 
			
		||||
		if !stmt.ReflectValue.IsValid() {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								scan.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								scan.go
									
									
									
									
									
								
							@ -191,7 +191,7 @@ func Scan(rows *sql.Rows, db *DB, initialized bool) {
 | 
			
		||||
					db.Statement.ReflectValue.Set(reflect.Append(db.Statement.ReflectValue, elem.Elem()))
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		case reflect.Struct:
 | 
			
		||||
		case reflect.Struct, reflect.Ptr:
 | 
			
		||||
			if db.Statement.ReflectValue.Type() != Schema.ModelType {
 | 
			
		||||
				Schema, _ = schema.Parse(db.Statement.Dest, db.cacheStore, db.NamingStrategy)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
@ -28,6 +28,12 @@ func TestScan(t *testing.T) {
 | 
			
		||||
		t.Fatalf("Scan into struct should work, got %#v, should %#v", res, user3)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var resPointer *result
 | 
			
		||||
	DB.Table("users").Select("id, name, age").Where("id = ?", user3.ID).Scan(&resPointer)
 | 
			
		||||
	if res.ID != user3.ID || res.Name != user3.Name || res.Age != int(user3.Age) {
 | 
			
		||||
		t.Fatalf("Scan into struct should work, got %#v, should %#v", res, user3)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	DB.Table("users").Select("id, name, age").Where("id = ?", user2.ID).Scan(&res)
 | 
			
		||||
	if res.ID != user2.ID || res.Name != user2.Name || res.Age != int(user2.Age) {
 | 
			
		||||
		t.Fatalf("Scan into struct should work, got %#v, should %#v", res, user2)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user