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 關注
- 488 瀏覽
添加回答
舉報