【发布时间】:2022-06-11 13:20:24
【问题描述】:
我想运行以下查询:
SELECT *
FROM artists
WHERE name LIKE '%roll%';
WHERE 子句将是动态的,这意味着我将遍历映射以构建它并将其链接到主查询。
话虽如此,在尝试迭代之前,我考虑过测试方法链接(我是 Gorm 的新手),所以我跑了:
var artist entities.Artist
query := as.db.Model(&artist)
query.Where("name LIKE ?", "%roll%")
if err := query.Find(&as.Artists).Error; err != nil {
return err
}
如您所见,我正在链接查询的不同部分并使用Find 完成它。这将返回表中的所有元素。打印出执行的查询后,我得到:
SELECT * FROM `artists` WHERE `artists`.`deleted_at` IS NULL
没有提到LIKE 子句,而且我不知道deleted_at IS NULL 是从哪里来的。虽然目前这并不重要,因为最终我也会将它添加到查询中。
但如果我跑:
var artist entities.Artist
query := as.db.Model(&artist)
if err := query.Where("name LIKE ?", "%roll%").Find(&as.Artists).Error; err != nil {
return err
}
我得到了我期望的结果。执行的查询是:
SELECT * FROM `artists` WHERE `artists`.`deleted_at` IS NULL AND ((name LIKE '%roll%'))
知道发生了什么吗?
【问题讨论】: