Golang gorm 有(就像在 Laravel 中)等效的方法?

标签 go go-gorm

有没有办法告诉 gorm 只选择那些具有 hasOne 关系(AttractionsData)的行(Attractions)?与我在 Laravel 中使用“::has('relativeName)”一样吗?以下代码将返回包含具有空关系的景点的集合,而不是跳过它们

type Attractions struct {
    ID              uint              `gorm:"primary_key"`
    ...
    Active                int       `json:"-"`
    AttractionsData AttractionsData `gorm:"foreignkey:AttractionID"`
}
type AttractionsData struct {
    ID                    uint      `gorm:"primary_key"`
    AttractionID          uint      `json:"-"`
    Lang                  string    `json:"lang"`
    Title                 string    `json:"title"`
    Active                int       `json:"-"`
}
    ...
func someFunc(c *gin.Context){
    ...
    db := config.DBConnect()
    defer db.Close()    
    var atts []Attractions
    db.Preload("AttractionsData", "lang = ? AND active = ?", lang, 1).
            Where("country_id = ?", countryID).
            Where("category_id = ?", categoryID).
            Where("active = ?", 1).
            Find(&atts) 
    ...

最佳答案

我会先获取您想要的 ID:

ids := []int{}
db.Model(&AttractionData{}).
   Where("lang = ? AND active = ?", lang, 1).
   Pluck("attraction_id", &ids)
db.Preload("AttractionsData").
   Where("id IN (?)", ids).
   Where("category_id = ?", categoryID).
   Where("active = ?", 1).
   Find(&atts) 

关于Golang gorm 有(就像在 Laravel 中)等效的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54662699/

相关文章:

go - 您可以通过 virtual.go :EditObject()? 编辑 vdi 带宽分配吗

mongodb - 编码(marshal)和编码(marshal) BSON

go - 使用 gin 和 gorm 在 go lang 中对创建和更新操作使用相同的结构

postgresql - 带有gorm拨号错误的PostgreSQL连接无法分配请求的地址

go - 使用goquery从html中提取文本,但结果仍然包含html标签

datetime - 将 UTC 字符串转换为时间对象

json - 解析带有尾随逗号的 JSON 数组和 map 元素时出现运行时错误

postgresql - postgres,go-gorm-无法预加载数据

go - 在这种情况下,如何使用 go 将整数更改为字符串?

sqlite - 选择所有不在相关表中的