我需要分開where來驗證有條件的值,例如email := "[email protected]"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 '%[email protected]%'2: SELECT "users".* FROM "users" WHERE users.name LIKE '%jhon%'但我只需要一個查詢的結果: SELECT "users".* FROM "users" WHERE users.email LIKE '%[email protected]%' and users.name LIKE '%jhon%'謝謝!
1 回答

慕姐4208626
TA貢獻1852條經驗 獲得超7個贊
我相信這應該有效:
chain := db.Where("users.name like ?", "%"+jhon+"%")
email := "[email protected]"
if email != "" {
chain = chain.Where("users.email LIKE ?", "%"+email+"%")
}
chain.Find(&users)
所有的 Gorm 方法都像Where返回一個結果,這是可鏈接的。這意味著你可以繼續調用它的方法,直到你得到你喜歡的東西。
- 1 回答
- 0 關注
- 202 瀏覽
添加回答
舉報
0/150
提交
取消