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

假设我有 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 结构及其值?


任何建议将不胜感激,并在此先感谢


慕尼黑5688855
浏览 281回答 2
2回答

慕雪6442864

您可以使用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}

HUX布斯

这是我发现的从嵌入式结构加载嵌套对象的解决方案db.Preload("Company").Preload("Company.Owner").Find(&Employees)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go