Mysql 表引用了一个表,而该表又引用了另一个表
我使用的是gorm,我有这样一个结构,Mysql 表引用了一个表,而该表又引用了另一个表,mysql,go,go-gorm,Mysql,Go,Go Gorm,我使用的是gorm,我有这样一个结构,用户表包含一个外键,引用地址,然后引用国家 类型用户结构{ ID int`gorm:“列:ID;primaryKey;自动递增”json:“ID”` 地址 AddressID int`gorm:“列:address\u id;foreignKey:AddressID;引用:id”json:“address”` } 类型地址结构{ ID int`gorm:“列:ID;primaryKey;自动增量;”json:“ID”` CountryCode int`gor
用户
表包含一个外键,引用地址
,然后引用国家
类型用户结构{
ID int`gorm:“列:ID;primaryKey;自动递增”json:“ID”`
地址
AddressID int`gorm:“列:address\u id;foreignKey:AddressID;引用:id”json:“address”`
}
类型地址结构{
ID int`gorm:“列:ID;primaryKey;自动增量;”json:“ID”`
CountryCode int`gorm:“列:国家代码;外键:国家代码;引用:代码”json:“国家代码”`
乡村
}
类型国家结构{
Code int`gorm:“列:Code;primaryKey;自动增量”json:“Code”`
名称字符串`gorm:“列:名称”json:“名称”`
大陆名称字符串`gorm:“列:大陆名称”json:“大陆名称”`
}
照片中解释的关系:
现在,当我使用以下命令返回用户时:
db.Model(&user).Where().First()//或Find()
我得到了地址,国家是空的,就像这样:
{
ID:1,
地址:2,,
地址:{
//空地址。
}
}
我确实为自己创建了重新填充地址
和国家
记录的函数,类似如下:
func PopulateUser(用户)用户{
addr=findaddresbyd(user.ID)
cntr=FindCountryCode(地址代码)
地址国家=cntr
user.Address=addr
返回用户
}
但我的问题是:
Gorm
中是否有一个函数可以在我不创建函数的情况下为我实现这一点Gorm
中执行此操作类型用户结构{
地址`gorm:“foreignKey:AddressID;references:ID”`
AddressID int`gorm:“列:地址\u id”`
}
类型地址结构{
CountryCode int`gorm:“列:国家代码”`
国家/地区gorm:“外键:国家代码;参考:代码”`
}
请试试这些
为了
db.Preload(“用户”).Preload(“地址”).Find(&users)
类型用户结构{
戈姆模型
名称字符串
公司ID int
Company`gorm:“约束:OnUpdate:CASCADE,OnDelete:SET NULL;”`
}