GoLang method to load nested objects using GORM
P粉448346289
P粉448346289 2024-03-27 13:20:01
0
2
453

Hi, let's say I have 3 structures in the following format

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 ""
      }
    }
  }
]

Here I got the owner value with default value. The example given is used to describe what I want to achieve.

I need a way how to load the owner structure and its value when loading employees?

Any suggestions would be greatly appreciated and thanks in advance

P粉448346289
P粉448346289

reply all(2)
P粉642920522

You can use gorm:"embedded" Tags:

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
}
P粉148782096

This is the solution I found for loading nested objects from embedded structures

db.Preload("Company").Preload("Company.Owner").Find(&Employees)
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!