【发布时间】:2020-10-02 20:37:08
【问题描述】:
我有一个 Movie 模型,它在 Gorm 中定义了很多多对多关系。现在我必须创建一个 API 来查询在这些关系中具有 ID 的所有电影。
让我们把它分成小块:
电影模型:
type Movie struct {
gorm.Model
TitleID string `gorm:"size:50;not null" json:"title_id"`
OriginalName string `gorm:"size:250;not null" json:"original_name"`
Categories []Category `gorm:"null;many2many:movie_categories;" json:"categories"`
Types []Type `gorm:"null;many2many:movie_types;" json:"types"`
Directors []Cast `gorm:"null;many2many:movie_directors;" json:"directors"`
Writers []Cast `gorm:"null;many2many:movie_writers;" json:"writers"`
}
我的查询功能:
func (u *Movie) FindMoviesByDirectors(db *gorm.DB, directors string) (*[]Movie, error) {
var err error
movies := []Movie{}
err = db.Set("gorm:auto_preload", true).Where("directors = ?", directors).Find(&movies).Error
if err != nil {
return &[]Movie{}, err
}
return &movies, err
}
- 如何从关系中查询带有 ID 的电影? (在我的例子中,查询所有 ID 为
1为director的电影。) - 如何扩展它以查询具有多个 ID 和多个关系的电影? (例如,对于
directors和[3,4]的types,查询所有具有[1,2]ID 的电影。)
【问题讨论】:
标签: postgresql go go-gorm