хорошо, так что я думаю, что мои структуры в порядке, но вот они,
Адрес профиля
type ProfileAddress struct {
gorm.Model
Archive bool `json:"archive"`
Address Address
AddressFK int `gorm:"ForeignKey:id" json:"-"`
Profile Profile
ProfileFK uint `gorm:"ForeignKey:id" json:"-"`
}
Адрес
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 Profile struct {
gorm.Model
Company string `gorm:"size:255" json:"company"`
AddedDate time.Time `gorm:"type:date" json:"date_added"`
}
Это работает при создании моей базы данных (postgres работает в Docker).Но когда я делаю это,
profileAdd := []structs.ProfileAddress{}
db.Debug().Find( &profileAdd )
я получаю данные из таблицы Profile Address
, но таблицы Address
& Profile
полностью пусты.
Я также пытался использоватьRelated
и Preload
, но ничего не работает.
Однако я могу заставить его работать, когда использую Raw Query
, вот так:
rows, err := db.Raw("select addresses.address_line1, addresses.address_line2 from profile_addresses left join addresses on addresses.id = profile_addresses.address_fk where profile_addresses.deleted_at IS NULL").Rows()
if err != nil {
fmt.Println(err)
}
defer rows.Close()
for rows.Next() {
var testData structs.ProfileAddress
rows.Scan(&testData.Address.AddressLine1, &testData.Address.AddressLine2)
profileAdd = append(profileAdd, testData)
}