2 回答
TA贡献1785条经验 获得超4个赞
我不知道deleted_at IS NULL从哪里来
您可能正在扩展您的模型,gorm.Model其中包含DeleteAt导致deleted_at IS NULL被添加到查询中的字段。DeleteAt用于检查记录是否被删除,然后不将其包含在结果中
没有提到 LIKE 子句
var artist entities.Artist
query := as.db.Model(&artist)
query.Where("name LIKE ?", "%roll%") <- will return new query
if err := query.Find(&as.Artists).Error; err != nil {
return err
}
正如 Bill 指出的那样Where,返回具有修改条件的新查询,但是由于您没有为其分配任何内容,因此不会将其添加到查询中
var artist entities.Artist
query := as.db.Model(&artist)
if err := query.Where("name LIKE ?", "%roll%").Find(&as.Artists).Error; err != nil {
return err
}
在这里,您使用Find的是新返回的查询,其中包含条件,因此它按预期工作。
要在查询中链接多个 where 条件,您可以通过多种方式实现:
1:
var artist entities.Artist
query := as.db.Model(&artist)
query = query.Where("name LIKE ?", "%roll%")
if err := query.Find(&as.Artists).Error; err != nil {
return err
}
2:
var artist entities.Artist
query := as.db.Model(&artist)
err := query.
Where("name LIKE ?", "%roll%").
Where("name LIKE ?", "%m%").
Find(&as.Artists).
Error
if err != nil {
return err
}
TA贡献1812条经验 获得超5个赞
query.Where()
文档(https://gorm.io/docs/query.html )中使用的所有示例都显示了链接,就像您的第二个示例一样。
我的结论是Where()
不修改实例的 SQL query
,它返回一个包含条件的新查询实例。
- 2 回答
- 0 关注
- 431 浏览
添加回答
举报