簡體   English   中英

Golang 中的 Gorm 時間戳

[英]Gorm Timestamps in Golang

type Base struct {
    ID          uint            `gorm:"primary_key" json:"id"`
    CreatedAt   time.Time       `json:"created_at"`
    UpdatedAt   time.Time       `json:"updated_at"`
    DeletedAt   *gorm.DeletedAt `sql:"index" json:"deleted_at" swaggertype:"primitive,string"`
    CreatedByID uint            `gorm:"column:created_by_id" json:"created_by_id"`
    UpdatedByID uint            `gorm:"column:updated_by_id" json:"updated_by_id"`
}

如果我將一些值傳遞給 created_at 和 updated_at,它會將當前時間作為默認值,而不是我傳遞的值。 有什么辦法可以讓 gorm 接受我已經傳遞的值。

三種方式

  1. 使用數據庫function 為字段定義默認標簽以填寫默認值。 例如對於 MySQL 數據庫current_timestamp()可以使用
     CreatedAt time.Time `gorm:"default:CURRENT_TIMESTAMP()"`
  1. 按照@Guolei 的建議分配默認值。
  2. gorm.Model嵌入到您的結構中,以自動處理 ID、CreatedAt、UpdatedAt 和 DeletedAt。

如果包含文件:CreatedAt 和 UpdatedAt,gorm 將在執行時使用反射插入默認值。 你也可以給出具體的值。

info := Example{
    CreatedAt: time.Now(),
    UpdatedAt: time.Now(),
}
_, err := DB.Insert(info)

@s3vt 回答的更新:

如果您使用他們提供的第一種方法,則需要像這樣在不帶括號的情況下放置 function:

CreatedAt time.Time `gorm:"default:current_timestamp"`

我花了很多時間試圖找出我遇到的錯誤,所以我想我會把它分享給可能會遇到這個問題的人!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM