问题内容 我正在尝试使用 gORM 更新数据库中的实体帖子,更新在数据库中正确反映,但在 Gorm 包返回的对象中,created_at 和 Updated_at 字段是默认时间,即“
我正在尝试使用 gORM 更新数据库中的实体帖子,更新在数据库中正确反映,但在 Gorm 包返回的对象中,created_at 和 Updated_at 字段是默认时间,即“0001/01/01 ...” p>
我的数据库模型是
type Base struct {
ID uuid.UUID `JSON:"id" gorm:"primaryKey;default:gen_random_uuid();not null"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
DeletedAt *gorm.DeletedAt `gorm:"index" json:"deleted_at" swaggertype:"primitive,string"`
}
type Post struct {
Base
Title string `json:"title" gorm:"column:title"`
TLDR string `json:"tldr" gorm:"column:tldr"`
html string `json:"html" gorm:"column:html"`
JSON string `json:"json" gorm:"column:json"`
BannerImage string `json:"banner_image" gorm:"column:banner_image"`
Slug string `json:"slug" gorm:"column:slug"`
Status Status `json:"status" gorm:"column:status"`
AuthorID uuid.UUID `json:"author_id" gorm:"column:author_id;"`
}
查询是
func (p *pgPostRepository) UpdatePost(postDetails *models.Post) (*models.Post, error) {
db := p.db.GetClient().(*gorm.DB)
err := db.Model(&models.Post{}).Where(&models.Post{
Base: models.Base{
ID: postDetails.ID,
},
}).Updates(&postDetails).Error
if err != nil {
return nil, err
}
return postDetails, nil
}
仅供参考,api 响应是 -
{
"message": "post updated successfully",
"post": {
"id": "e4645d79-51da-4e08-85d3-e7409ad6b77b",
"created_at": "0001-01-01T00:00:00Z",
"updated_at": "0001-01-01T00:00:00Z",
"deleted_at": null,
"title": "Sample Title",
"tldr": "Brief summary of the content",
"html": "This is the HTML content.
",
"json": "{\"key\": \"value\"}",
"banner_image": "https://example.com/image.jpg",
"slug": "sample-title-1694539437151872840",
"status": "draft",
"author_id": "96fa719c-358e-4c5d-b878-daee02e2c38b"
}
}
您应该尝试在更新记录时手动设置 UpdatedAt
字段。像这样的事情:
func (p *pgPostRepository) UpdatePost(postDetails *models.Post) (*models.Post, error) {
db := p.db.GetClient().(*gorm.DB)
postDetails.UpdatedAt = time.Now()
err := db.Model(&models.Post{}).Where(&models.Post{
Base: models.Base{
ID: postDetails.ID,
},
}).Updates(&postDetails).Error
if err != nil {
return nil, err
}
return postDetails, nil
}
以上就是Gorm 中的更新将created_at、updated_at 作为默认时间的详细内容,更多请关注编程网其它相关文章!
--结束END--
本文标题: Gorm 中的更新将created_at、updated_at 作为默认时间
本文链接: https://lsjlt.com/news/561223.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0