Saya cuba mengemas kini siaran entiti dalam pangkalan data menggunakan gorm, kemas kini ditunjukkan dengan betul dalam pangkalan data, tetapi dalam objek yang dikembalikan oleh pakej gorm, medan created_at dan Updated_at adalah lalai masa, iaitu "0001/01/01...” p>
Model pangkalan data saya ialah
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;"` }
Pertanyaan ialah
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 }
FYI, tindak balas API ialah -
{ "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": "<p>This is the HTML content.</p>", "json": "{\"key\": \"value\"}", "banner_image": "https://example.com/image.jpg", "slug": "sample-title-1694539437151872840", "status": "draft", "author_id": "96fa719c-358e-4c5d-b878-daee02e2c38b" } }
Anda harus cuba tetapkan medan UpdatedAt
secara manual semasa mengemas kini rekod. Perkara seperti ini:
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 }
Atas ialah kandungan terperinci Kemas kini dalam Gorm menggunakan created_at, updated_at sebagai masa lalai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!