我正在使用gorm,并且我有这个结构,其中表包含一个外键引用,然后引用。UserAddressCountry
type User struct {
ID int `gorm:"column:id; primaryKey; autoIncrement" json:"id"`
Address Address
AddressID int `gorm:"column:address_id;foreignKey:AddressID;references:ID" json:"address"`
}
type Address struct {
ID int `gorm:"column:ID;primaryKey;autoIncrement;" json:"id"`
CountryCode int `gorm:"column:country_code; foreignKey:CountryCode; references:Code" json:"country_code"`
Country Country
}
type Country struct {
Code int `gorm:"column:code; primaryKey; autoIncrement" json:"code"`
Name string `gorm:"column:name" json:"name"`
ContinentName string `gorm:"column:continent_name" json:"continentName"`
}
照片中解释的关系:
现在,当我使用以下命令返回用户时:
db.Model(&user).Where().First() // or Find()
我得到地址,和国家空,像这样:
{
ID: 1,
AddressID: 2,
Address: {
// empty address.
}
}
我确实为我创建了重新填充和记录的函数,类似于以下内容:AddressCountry
func PopulateUser(user) User {
addr = FindAddresByID(user.ID)
cntr = FindCountryByCode(addr.Code)
addr.Country = cntr
user.Address = addr
return user
}
但我的问题:
有没有一个函数可以在不创建函数的情况下为我做到这一点?Gorm
在这种情况下,协会可以提供帮助吗?
如果我希望在用户删除时删除地址,我该如何执行此操作?Gorm
我试图自己找到答案,但文档有点乱。
守候你守候我
相关分类