【发布时间】:2020-02-13 03:54:15
【问题描述】:
我们可以通过 Preload 在 Golang Gorm 中轻松获取 hasMany 关系的子节点。 但是如何获得反向关系。
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"`
}
我们可以使用 Preload 在 Project 中填充 Gallery,如下所示:
db.Preload("Gallery").Find(&project)
如何获得反向,我们想从画廊或项目的所有者加载项目?
当以 json 形式获取项目时,我想要这样的结果:
{
"id": 1,
"name": "Name Of Project",
"owner": {
"id":1,
"name": "Owner 1"
},
"gallery":[]
}
【问题讨论】:
-
我也在找这个。我来自 NodeJS(express),它有办法做到这一点。有人吗?