gpt4 book ai didi

乱码 : Join with changeable 'where' conditions

转载 作者:IT王子 更新时间:2023-10-29 02:19:09 25 4
gpt4 key购买 nike

我有 2 个表: Actor 和电影。我需要通过可变过滤器来获取 Actor 及其所有电影 - 它们可以存在或不存在,单个值或可能值的一部分。

我怀疑我让它工作的方式(使用 db 对象)闻起来很糟糕。

有什么建议吗?

var (
orderBy string
count uint
where = map[string]interface{}{}
data []ActorsWithFilms
db = ms.db.Table("actor")
)

if filter.ActorName != "" {
where["actor_name"] = filter.ActorName
}

if filter.UpdatedFrom != "" {
db = db.Where("actor.updated_at >= ?", filter.UpdatedFrom)
}

if len(filter.FilmNames) != 0 {
db = db.Where("film.name in (?)", filter.FilmNames)
}

if len(filter.Statuses) != 0 {
db = db.Where("actor.status in (?)", filter.Statuses)
}

err := db.
Joins("join film on film.actorID = actor.id").
Where(where).
Preload("Film").
Order(orderBy).
Limit(filter.GetLimit()).
Offset(filter.Offset).
Find(&data).
Count(&count).
Error

最佳答案

这实际上对我来说并不坏。 Gorm 完全公开了一个方法链接接口(interface),因此您可以像这样构建查询,所以我不会说这是一种代码味道。

关于乱码 : Join with changeable 'where' conditions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55952363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com