Fix "Unsupported destination" error when value is pointer of pointer

This commit is contained in:
Jinzhu 2017-02-07 08:32:18 +08:00
parent b870f86fba
commit c730b30a78
3 changed files with 7 additions and 4 deletions

View File

@ -30,7 +30,7 @@ func queryCallback(scope *Scope) {
} }
if value, ok := scope.Get("gorm:query_destination"); ok { if value, ok := scope.Get("gorm:query_destination"); ok {
results = reflect.Indirect(reflect.ValueOf(value)) results = indirect(reflect.ValueOf(value))
} }
if kind := results.Kind(); kind == reflect.Slice { if kind := results.Kind(); kind == reflect.Slice {

View File

@ -461,8 +461,10 @@ func TestScan(t *testing.T) {
t.Errorf("Scan into struct should work") t.Errorf("Scan into struct should work")
} }
var doubleAgeRes result var doubleAgeRes = &result{}
DB.Table("users").Select("age + age as age").Where("name = ?", user3.Name).Scan(&doubleAgeRes) if err := DB.Table("users").Select("age + age as age").Where("name = ?", user3.Name).Scan(&doubleAgeRes).Error; err != nil {
t.Errorf("Scan to pointer of pointer")
}
if doubleAgeRes.Age != res.Age*2 { if doubleAgeRes.Age != res.Age*2 {
t.Errorf("Scan double age as age") t.Errorf("Scan double age as age")
} }

View File

@ -18,7 +18,8 @@ func TestFirstAndLast(t *testing.T) {
DB.First(&user1) DB.First(&user1)
DB.Order("id").Limit(1).Find(&user2) DB.Order("id").Limit(1).Find(&user2)
DB.Last(&user3) ptrOfUser3 := &user3
DB.Last(&ptrOfUser3)
DB.Order("id desc").Limit(1).Find(&user4) DB.Order("id desc").Limit(1).Find(&user4)
if user1.Id != user2.Id || user3.Id != user4.Id { if user1.Id != user2.Id || user3.Id != user4.Id {
t.Errorf("First and Last should by order by primary key") t.Errorf("First and Last should by order by primary key")