有没有办法告诉 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/