обновление таблицы postgres с помощью gorm - PullRequest
0 голосов
/ 16 февраля 2019

У меня проблемы с попыткой обновить строки в моей таблице.Я пробовал следующее:

return ss.db.Where("name = ?", sub.Name).Save(&sub).Error

и

return ss.db.Save(sub).Error

Я также пробовал варианты этого

s := ss.db.Where("Name = ?", sub.Name)
    return ss.db.Model(&s).Updates(Subscription{Name: sub.Name, DevicesAllowed: sub.DevicesAllowed, Price: sub.Price, Active: sub.Active}).Error

Я также пробовал несколько других подходов, которыене сработал, например, эта попытка приводит к изменению всех строк:

return ss.db.Model(&sub).Updates(Subscription{Name: sub.Name, DevicesAllowed: sub.DevicesAllowed, Price: sub.Price, Active: sub.Active}).Error

У меня есть остальная часть кода здесь для справки: https://gist.github.com/yshuman1/8a26a90507bc13de7290d3adc0facdd1

Любая помощьили совет будет оценен!Спасибо.

1 Ответ

0 голосов
/ 17 февраля 2019

решение состояло в том, чтобы найти запись в таблице и затем заменить старые значения новыми перед использованием .Save () следующим образом:

func (ss *SubscriptionService) Update(sub *Subscription) error {
    var subscription Subscription
    db := ss.db.Where(&Subscription{Name: sub.Name})
    err := first(db, &subscription)
    if err != nil {
        log.Error("error looking up subscription")
        return err
    }
    subscription.Price = sub.Price
    subscription.Active = sub.Active
    subscription.DevicesAllowed = sub.DevicesAllowed
    return ss.db.Save(&subscription).Error
}
...