猿问

在 GORM 中按日期过滤

我正在使用GORM访问我的数据库中的记录。现在我想检索所有未删除的记录,这意味着属性 DeletedAt 必须为 NULL。


我用 尝试了以下命令链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"`

}


潇湘沐
浏览 520回答 1
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)
随时随地看视频慕课网APP

相关分类

Go
我要回答