Итак, я использую Go Lang 1.10.3 с фреймворком Echo с Gorm и Postgres в качестве моей базы данных.
У меня есть три таблицы / структуры: Profile, Addresses и Profile_addresses.
Структуры следующие:
Профиль
type Profile struct {
gorm.Model
Company string `gorm:"size:255" json:"company"`
AddedDate time.Time `gorm:"type:date" json:"date_added"`
ProfileAddresses []ProfileAddress `gorm:"foreignkey:profile_fk" json:"address_id"`
}
Адрес
type Address struct {
gorm.Model
AddressLine1 string `gorm:"size:255" json:"line1"`
AddressLine2 string `gorm:"size:255" json:"line2"`
AddressLine3 string `gorm:"size:255" json:"line3"`
City string `gorm:"size:200" json:"city"`
Country string `gorm:"size:255" json:"country"`
Postcode string `gorm:"size:12" json:"postcode"`
ProfileAddresses []ProfileAddress `gorm:"foreignkey:address_fk"`
}
И адрес профиля
type ProfileAddress struct {
gorm.Model
Archive bool `json:"archive"`
Profile Profile
Address Address
AddressFK int`gorm:"ForeignKey:id"`
ProfileFK int`gorm:"ForeignKey:id"`
}
Все эти таблицы настраиваются нормально, но теперь я пытаюсь сохранить идентификатор адреса в таблице адресов профиля при создании нового профиля. Отправка данных в /profile/add
(с помощью Postman), включая следующие данные
{
"company": "testing-000001",
"date_added": "3051-11-09T00:00:00+00:00",
"address_id": 3
}
Теперь я могу сохранить новый профиль и новый адрес, но не сохранить эти данные. Я только что добавил параметр json:"address_id"`
в конец Profile struct
, но это не сработало.
Я настроил это так, поскольку у одного профиля может быть много адресов, поэтому должна быть связанная таблица со всеми идентификаторами адресов. Я уверен, что смогу сделать это в два этапа, например сохраните профиль, затем сохраните адреса, которые я хочу добавить в этот профиль, но я бы хотел, чтобы это работало. Мне также не нужно создавать новый адрес, они уже были бы добавлены в систему.
Так что я делаю не так?
Любая помощь приветствуется.
Спасибо,