登录
首页 >  Golang >  Go问答

是否在Golang的Gorm中有类似于Laravel中的方法?

来源:stackoverflow

时间:2024-02-29 12:06:14 120浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是Golang学习者,那么本文《是否在Golang的Gorm中有类似于Laravel中的方法?》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

有没有办法告诉 gorm 仅选择那些具有 hasone 关系 (attractionsdata) 的行(景点)?和我在 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的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>