2015-05-14 287 views
1

我正在使用GORM訪問我的數據庫中的記錄。現在我想檢索所有未刪除的記錄,這意味着屬性DeletedAt必須爲NULL。在GORM中按日期過濾

我嘗試了以下命令鏈與WHERE(),但他們沒有返回任何結果。

users := []*models.User{} 
db.Where("deleted_at", nil).Find(&users) 

db.Where("deleted_at", "NULL").Find(&users) 

我的數據庫模型是由以下結構定義:

type Model struct { 
    ID  uint `gorm:"primary_key"` 
    CreatedAt time.Time 
    UpdatedAt time.Time 
    DeletedAt *time.Time 
} 

type User struct { 
    gorm.Model 
    Username string `sql:"size:32; not null; unique"` 
    Password string `sql:"not null"` 
    Locale string `sql:"not null"` 
} 

回答

1

與所有RDBMS中,SQL標準規定,涉及與NULL值的比較條件總是假的。下面的查詢,因此總是會返回一個空的結果:

select * from XXX where deleted_at = NULL 

如果你要搜索NULL值,你應該寫:

select * from XXX where deleted_at is null 

我想你可以通過確保GORM解決問題生成正確的查詢。例如,這應該工作(未經測試):

db.Where("deleted_at is null").Find(&users) 
+0

它工作正常。謝謝。 – user3147268