【发布时间】:2022-01-09 11:29:08
【问题描述】:
我是 golang 和 Gorm 的新手
这是我的结构
type SonModel struct {
ID int64
Age int
Name string
FatherID int64
Father FaterModel `gorm:"foreignKey:ID;references:FatherID"`
}
type FaterModel struct {
ID int64
Name string
GrandID int64
Grand GrandModel `gorm:"foreignKey:ID;references:GrandID"`
}
type GrandModel struct {
ID int64
Name string
}
在原始 sql 中我想要的是select son.id,son.name,to_json(father.*) father from son join father on father.id = son.father_id where (son.name like '%name%' or father.name like '%name%') and son.age = 15
我想和父亲一起加入和过滤
我正在做的事情是
db = db.Joins("Father").Preload("Father.Grand")
db = db.Joins("left join father on father.id = son.id left join grand on grand.id = father.grand_id")
db = db.Where("age = ?",15)
db = db.Where("father.name like ? or son.name like ? or grand.name like ?",name)
我发现它离开了两次加入父亲和盛大
先加入Father as Father获取父亲专栏
发送是我的自定义左加入
我怎样才能只加入一次(“父亲”)并使用它的列进行过滤
【问题讨论】: