【发布时间】:2021-07-05 16:44:14
【问题描述】:
我已经被一个 GORM 问题困扰了大约一整天。我需要能够根据以下 4 项中的任何一项过滤消息表:发件人、收件人、关键字和日期范围。它还必须分页。按发件人和收件人过滤正在工作,分页也是如此。到目前为止,这是我提出的查询,但它似乎不适用于日期范围或关键字。
这是我从 MySQL 中选择的方式
db.Preload("Thread").Where(query).Scopes(Paginate(r)).Find(&threadMessages)
我正在创建这样的查询:
var query map[string]interface{}
然后根据我传递的参数,我通过向地图添加新的键值来更新查询:
query = map[string]interface{}{"user_id": sender, "recipient_id": recipient}
如果我尝试这样的事情,它似乎不起作用:
query = map[string]interface{}{"created_at > ?": fromDate}
对于 LIKE 条件似乎也不起作用:
query = map[string]interface{}{"contents LIKE ?": keyword}
我选择这种方法的原因是我似乎无法获得可选输入来工作。因为它需要一个带有位置参数的字符串,而空位置参数似乎导致 MySQL 返回一个空数组。有没有其他人处理过这样复杂的 GORM 问题?任何帮助在这一点上表示赞赏。
【问题讨论】: