我想运行以下查询:
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%'))
知道发生了什么事吗?
九州编程
慕雪6442864
相关分类