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 {
results = reflect.Indirect(reflect.ValueOf(value))
results = indirect(reflect.ValueOf(value))
}
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")
}
var doubleAgeRes result
DB.Table("users").Select("age + age as age").Where("name = ?", user3.Name).Scan(&doubleAgeRes)
var doubleAgeRes = &result{}
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 {
t.Errorf("Scan double age as age")
}

View File

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