Skip to content

5. todos 表是如何自动创建的

这是通过 GORM 的自动迁移功能实现的,具体在 config/database.go 文件中的这段代码:

go
// :d:\works\RD\todo-list\config\database.go
// 自动迁移数据库结构
err = db.AutoMigrate(&models.Todo{})
if err != nil {
    return nil, err
}

AutoMigrate 会根据 models/todo.go 中定义的 Todo 结构体自动创建或更新数据库表结构。它会:

  1. 如果表不存在,创建新表
  2. 如果表存在但缺少某些字段,添加新字段
  3. 如果表中的字段类型与模型不匹配,修改字段类型

因为 Todo 结构体嵌入了 gorm.Model,所以会自动创建以下字段:

  • id (主键)
  • created_at (创建时间)
  • updated_at (更新时间)
  • deleted_at (软删除时间)

以及我们自定义的字段:

  • title
  • description
  • due_date
  • completed