返回顶部
首页 > 资讯 > 精选 >Gorm 中的更新将created_at、updated_at 作为默认时间
  • 869
分享到

Gorm 中的更新将created_at、updated_at 作为默认时间

2024-02-06 05:02:59 869人浏览 安东尼
摘要

问题内容 我正在尝试使用 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

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作