我要运行以下查询:
SELECT *
FROM artists
WHERE name LIKE '%roll%';
WHERE
子句将是动态的,这意味着我将遍历一个映射来构建它并将其链接到主查询.
话虽如此,在try 迭代之前,我考虑过测试方法链接(我对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
是从哪里来的.虽然目前这并不重要,因为最终我也会将其添加到查询中.
但如果我 run :
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%'))
知道怎么回事吗?