我需要分开where来验证有条件的值,例如email := "test@test.com"if email != "" { db.Where("users.email LIKE ?", "%"+email+"%")}db.Where("users.name like ?", "%"+jhon+"%").Find(&users)这将返回两个查询:1: SELECT "users".* FROM "users" WHERE users.email LIKE '%test@test.com%'2: SELECT "users".* FROM "users" WHERE users.name LIKE '%jhon%'但我只需要一个查询的结果: SELECT "users".* FROM "users" WHERE users.email LIKE '%test@test.com%' and users.name LIKE '%jhon%'谢谢!
1 回答
慕姐4208626
TA贡献1852条经验 获得超7个赞
我相信这应该有效:
chain := db.Where("users.name like ?", "%"+jhon+"%")
email := "test@test.com"
if email != "" {
chain = chain.Where("users.email LIKE ?", "%"+email+"%")
}
chain.Find(&users)
所有的 Gorm 方法都像Where返回一个结果,这是可链接的。这意味着你可以继续调用它的方法,直到你得到你喜欢的东西。
- 1 回答
- 0 关注
- 178 浏览
添加回答
举报
0/150
提交
取消