Na przykład jest to mój model

type User struct {
  gorm.Model
  Languages []Language `gorm:"many2many:user_languages;"`
}

type Language struct {
  gorm.Model
  Name string
}

Chcę dostać użytkowników, którzy mają język angielski. Jak mogę ustawić stan? Próbowałem tego i nie działa:

db.Preload("Languages").Where("Language.Name = ?", conditionVal).Find(&users)
1
Moein Hosseini 17 październik 2020, 12:33

1 odpowiedź

Najlepsza odpowiedź

Możesz wstępnie obciążać użytkowników z języka

language := Language{}
db.Where("Name = ?", langVal).Preload("Users").Find(&language)
users := language.Users

Modele potrzebują również backreference

type User struct {
    gorm.Model
    Languages []*Language `gorm:"many2many:user_languages;"`
}

type Language struct {
    gorm.Model
    Name  string
    Users []*User `gorm:"many2many:user_languages;"`
}

Offial Doc: Preload z warunkami

0
Eklavya 17 październik 2020, 11:36