为了账号安全,请及时绑定邮箱和手机立即绑定

GoLang 如何使用 GORM 加载嵌套对象

GoLang 如何使用 GORM 加载嵌套对象

Go
慕尼黑5688855 2023-01-03 10:08:12
假设我有 3 个结构,格式如下type Employee struct {  Id int  Name string  CompanyId int `gorm:"column:companyId"`  Company Company `gorm:"foreignKey:CompanyId"`}type Company struct {  Id int  CompanyName string  OwnerId `gorm:"column:owner"`  Owner Owner `gorm:"foreignKey:OwnerId"`}type Owner struct {  Id int  Name string  Age int  Email string}func (E Employee) GetAllEmployees() ([]Employee, error) {  Employees := []Employee  db.Preload("Company").Find(&Employees)}// -- -- There response will be like[  {    id: 1    name: "codernadir"    company: {      id: 5      company_name: "Company"      owner: {        id 0        Name ""        Age 0        Email ""      }    }  }]在这里,我使用默认值获取 Owner 值。给定的例子是为了描述我想要达到的目标。当我加载员工时,我需要一种方法如何加载 Owner 结构及其值?任何建议将不胜感激,并在此先感谢
查看完整描述

2 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

您可以使用gorm:"embedded"标签:


type Employee struct {

  Id int

  Name string

  CompanyId int `gorm:"column:companyId"`

  Company Company `gorm:"embedded"`

}


type Company struct {

  Id int

  CompanyName string

  OwnerId `gorm:"column:owner"`

  Owner Owner `gorm:"embedded"`

}


type Owner struct {

  Id int

  Name string

  Age int

  Email string

}


查看完整回答
反对 回复 2023-01-03
?
HUX布斯

TA贡献1876条经验 获得超6个赞

这是我发现的从嵌入式结构加载嵌套对象的解决方案

db.Preload("Company").Preload("Company.Owner").Find(&Employees)


查看完整回答
反对 回复 2023-01-03
  • 2 回答
  • 0 关注
  • 315 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号