Запросы типа / gte / lte со структурой в GORM с использованием postgres

У меня есть 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 для поля имени пользователя с форматом структуры? Как насчет больше или меньше?


person MehrdadEP    schedule 04.07.2020    source источник


Ответы (1)


Я думаю, что это невозможно, Struct in where condition используется для равной проверки для поля (Ссылка)

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

Для Like/gte/lte запроса вы должны использовать простой SQL внутри where()

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

См. здесь

person Eklavya    schedule 04.07.2020
comment
Буду рад, если вы мне скажете, где я не прав и как исправить - person Eklavya; 04.07.2020