Обновление со значением 0, используя Gorm - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь обновить некоторые значения с использованием библиотеки gorm, но байты и целые числа со значением 0 не обновляются

var treatment model.TreatmentDB

err = json.Unmarshal(b, &treatment)
if err != nil {
    http.Error(w, err.Error(), 500)
    return
}

fmt.Println(&treatment)

db := db.DB.Table("treatment").Where("id = ?", nID).Updates(&treatment)

это значение печати равно {0 3 1 0 0 0 2018-01-01 4001-01-01}, а эти 0 являются байтовыми значениями (tinyint (1) в базе данных, если я изменяю на int, также не работает), которые не обновляются, остальные значения работают нормально

, если я обновляю их безиспользуя Gorm, он отлично работает с 0 значениями

var query  = fmt.Sprintf("UPDATE `pharmacy_sh`.`treatment` SET `id_med` = '%d', `morning` = '%d', `afternoon` = '%d', `evening` = '%d', `start_treatment` = '%s', `end_treatment` = '%s' WHERE (`id` = '%s')", treatment.IDMed, treatment.Morning,  treatment.Afternoon, treatment.Evening, treatment.StartTreatment, treatment.EndTreatment, nID)

update, err := dbConnector.Exec(query)

, и это моя модель obj

type TreatmentDB struct {
gorm.Model
ID              int         `json:"id"`
IDMed           int         `json:"id_med"`
IDUser          int         `json:"id_user"`
Morning         byte        `json:"morning"`
Afternoon       byte        `json:"afternoon"`
Evening         byte        `json:"evening"`
StartTreatment  string      `json:"start_treatment"`
EndTreatment    string      `json:"end_treatment"`
}

Спасибо за любую помощь !!

1 Ответ

0 голосов
/ 17 июля 2019

Я нашел очень хитрый способ решения этой проблемы. Вам просто нужно изменить тип вашего структурного поля на ptr.

изменить

type Temp struct{
String string
Bool bool
}

на

type Temp struct{
String *string
Bool *bool
}
...