Golang Горм обратный имеет много отношений - PullRequest
0 голосов
/ 13 февраля 2020

Мы можем легко получить ребенка от отношения hasMany в Golang Gorm с Preload . Но как получить обратную связь.

type Owner struct {
    ID         int        `gorm:"column:id" json:"id"`
    Name       string     `gorm:"column:name" json:"name"`
    Projects   []Project  `gorm:"foreignkey:OwnerID" json:"projects"`
}

type Project struct {
    ID          int     `gorm:"column:id" json:"id"`
    Name        string  `gorm:"column:name" json:"name"`
    OwnerID     int     `gorm:"column:owner_id" json:"owner_id"`
    Gallery     []Gallery `gorm:"foreignkey:ProjectID" json:"gallery"`
}

type Gallery struct {
    ID             int    `gorm:"column:id" json:"id"`
    ProjectID      int    `gorm:"column:project_id" json:"project_id"`
    Url            string `gorm:"column:url" json:"url"`
    Title          string `gorm:"column:title" json:"title"`
    Description    string `gorm:"column:description" json:"description"`
}

мы можем заполнить Галерею в Project с помощью Preload, например:

db.Preload("Gallery").Find(&project)

Как получить обратную, мы хотим загрузить проект из галереи или владелец проекта?

результат Я хочу что-то подобное, когда получу проект в виде json:

{
   "id": 1,
   "name": "Name Of Project",
   "owner": {
      "id":1,
      "name": "Owner 1"
   },
   "gallery":[]
}
...