在gorm中,time.time有点坑,只会维护CreatedAt/UpdatedAt/DeletedAt 这三个字段,要是把其他字段(如CreateTime)定义为time.Time不会填充为当前时间,而是填充为0000-00-00 00:00:00,如果要自定义字段使用 time.Time 可以这样用:
方案一:

  1. type Test struct{
  2. ID uint
  3. AdminId uint
  4. IP string
  5. CreateTime time.Time
  6. //CreateTime string
  7. CreatedAt time.Time
  8. }
  9. func (test *Test) Beforecreate(tx *gorm.DB) (err error){
  10. test.createTime = time.Now()
  11. //test.createTime = time.Now().Format("2006-01-02 15:04:05")
  12. return
  13. }

方案二:或者 传值的时候给 CreateTime 赋一个初始值也可以;或者 CreateTime 定义成 *time.Time 这个时候传到数据库的值为 null

  1. type Test struct{
  2. ID uint
  3. AdminId uint
  4. IP string
  5. CreateTime *time.Time
  6. //CreateTime string
  7. CreatedAt time.Time
  8. }
  9. func (test *Test) Beforecreate(tx *gorm.DB) (err error){
  10. test.createTime = time.Now()
  11. //test.createTime = time.Now().Format("2006-01-02 15:04:05")
  12. return
  13. }

方案三:或者CreateTime定义成 string,这个时候在 Beforecreate 里要格式化一下,注意代码的变化

  1. type Test struct{
  2. ID uint
  3. AdminId uint
  4. IP string
  5. //CreateTime *time.Time
  6. CreateTime string
  7. CreatedAt time.Time
  8. }
  9. func (test *Test) Beforecreate(tx *gorm.DB) (err error){
  10. //test.createTime = time.Now()
  11. test.createTime = time.Now().Format("2006-01-02 15:04:05")
  12. return
  13. }

分类: web

标签:   golang