分隔查询位置
Separate where in query
我需要分开 where
来验证有条件的值,Example
email := "test@test.com"
if email != "" {
db.Where("users.email LIKE ?", "%"+email+"%")
}
db.Where("users.name like ?", "%"+jhon+"%").Find(&users)
那returns两个查询:
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%'
谢谢!
我相信这应该有效:
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
return 结果,这是可链接的。这意味着你可以继续调用它的方法,直到你得到你喜欢的东西。
我需要分开 where
来验证有条件的值,Example
email := "test@test.com"
if email != "" {
db.Where("users.email LIKE ?", "%"+email+"%")
}
db.Where("users.name like ?", "%"+jhon+"%").Find(&users)
那returns两个查询:
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%'
谢谢!
我相信这应该有效:
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
return 结果,这是可链接的。这意味着你可以继续调用它的方法,直到你得到你喜欢的东西。