gpt4 book ai didi

go - GORM更新查询会自动将时间列分配在何处

转载 作者:行者123 更新时间:2023-12-03 10:10:47 25 4
gpt4 key购买 nike

我是golang的新手,我的结构如下

type User struct{
ID int `gorm:"column:ID;primary_key:auto_increment" json:"ID"`
Name *string `gorm:"column:Name;default:null" json:"Name"`
DeletedAt *time.Time `gorm:"column:DeletedAt;default:null" json:"DeletedAt"`
}
我的更新查询如下所示
if err := database.GetMysqlDB().Debug().Model(&User{}).Where("ID = ?", 15).UpdateColumns(user).Error; err != nil {
fmt.Println(err)
}
}
但是我的Mysql调试如下
UPDATE User SET <data> WHERE DelatedAt IS NULL and ID = 15
我不明白为什么查询在where条件中添加DeletedAt列?
注意
我的表名和列都是大写的

最佳答案

对于来自this链接的信息,当将DeleteAt *time.Time添加到任何结构时,将为匹配的数据库表启用软删除功能。这就是为什么您对User模型进行的所有查询都将包含WHERE DeletedAt IS NULL条件的原因。
要解决此问题,可以使用Unscoped方法,该方法将在SQL查询中包括软删除的记录。

if err := database.GetMysqlDB().Debug().Unscoped().Model(&User{}).Where("ID = ?", 15).UpdateColumns(user).Error; err != nil {
fmt.Println(err)
}
}

关于go - GORM更新查询会自动将时间列分配在何处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65302614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com