【问题标题】:Like/gte/lte queries with struct in GORM using postgres使用 postgres 在 GORM 中使用 struct 进行 Like/gte/lte 查询
【发布时间】:2020-10-24 20:19:57
【问题描述】:

我有一个像这样的User 结构:

type User struct {
    Username         string `json:"username" bson:"username"`
    AuthorizationKey string `json:"authorization_key" bson:"authorization_key"`
    IsActive         bool   `json:"is_active" bson:"is_active"`
}

现在我可以使用

查询整个username
user := &User{}
if err := db.Where(&User{
    Username: username,
}).Find(&user).Error; err != nil {
    return user, err
}

并且我将此语句用于like 查询(普通查询)

db.Where("username LIKE ?", fmt.Sprintf("%%%s%%", username)).Find(&users)

是否可以使用like 查询结构格式的用户名字段?大于还是小于呢?

【问题讨论】:

    标签: postgresql go orm go-gorm


    【解决方案1】:

    我认为不可能,Struct in where 条件用于对字段进行相等检查 (Ref)

    db.Where(&User{ Username: username})
    

    对于Like/gte/lte 查询,您必须在where() 中使用纯SQL

    db.Where("username LIKE ?", fmt.Sprintf("%%%s%%", username)).Find(&users)
    

    参考here

    【讨论】:

    • 如果你告诉我我哪里错了以及如何改进,我会很高兴
    猜你喜欢
    • 2015-12-27
    • 2016-12-23
    • 2017-09-21
    • 2016-11-17
    • 2013-06-07
    • 1970-01-01
    • 2017-08-17
    • 2019-05-14
    • 1970-01-01
    相关资源
    最近更新 更多