我的模特是:
type Report struct {
ID int `json:"id,omitempty" gorm:"primary_key"`
Title *string `json:"title" gorm:"not null"`
}
我已将变量report
初始化为var report Report
我已成功将此模型自动迁移为数据库表,并使用GORM sql INSERT
将数据库填充为db.Create(&report)
。
我遇到的问题是在尝试查询命令时。 GORM支持的每个查询命令(例如db.Find(&report)
,db.First(&report, 1)
)都会导致以下查询:
SELECT * FROM "reports" WHERE "reports"."deleted_at" IS NULL AND ((id = $1))
SELECT * FROM "reports" WHERE "reports"."deleted_at" IS NULL AND ((id = $1))
SELECT * FROM reports WHERE (reports.deleted_at IS NULL) AND ((id = $1))
SELECT * FROM reports WHERE (reports.deleted_at IS NULL) AND ((id = $1))
SELECT 0 done
我无法查询数据库。我正在使用GORM和蟑螂db。这在使用GO pq驱动程序和原始sql命令时工作正常。
答案 0 :(得分:1)
deleted_at
列是GORM&n base gorm.Model
结构及其soft delete功能的一部分。您是否在某个我们无法在此示例中看到的地方使用gorm.Model
?除非您定义名为DeletedAt
的字段或在模型结构中嵌入gorm.Model
,否则不会发生这种情况。
答案 1 :(得分:0)
由于模型的字段为delete_at,gorm会自动使用软删除功能。您可以使用Unscoped
db.Unscoped().Find(&reports)
与运行原始查询相同
db.Raw("SELECT * FROM reports").Scan(&reports)