快速入门

[[toc]]

介绍

Goravel 路由模块可以使用 facades.DB 进行操作,facades.DB 是知名 ORM 框架 go-gorm/gorm 的一个实例,使用方法与 go-gorm/gorm 完全一致。

每一个数据表都对应有一个「模型」进行交互,模型文件保存在 app/models 文件夹中。

在开始之前,请在 .env 文件中配置数据库链接信息,并确认 config/database.go 的默认配置。

模型定义

可以根据框架自带的模型文件 app/models/user.go 创建自定义模型。在 app/models/user.go 文件中 struct 嵌套了 orm.Modelorm.SoftDeletes 两个框架自带结构体,他们分别定义了 id, created_at //创建时间, updated_at //更新时间deleted_at //软删除,可以直接使用。

模型约定

  1. 模型使用大驼峰进行命名;
  2. 使用模型的复数形式「蛇形命名」来作为表名;

查询

  1. facades.DB.First(&user, 10)
  2. // SELECT * FROM users WHERE id = 10;
  3. facades.DB.First(&user, "10")
  4. // SELECT * FROM users WHERE id = 10;
  5. facades.DB.Find(&users, []int{1,2,3})
  6. // SELECT * FROM users WHERE id IN (1,2,3);

创建

  1. user := User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}
  2. result := facades.DB.Create(&user)

更新

  1. facades.DB.First(&user)
  2. user.Name = "jinzhu 2"
  3. user.Age = 100
  4. facades.DB.Save(&user)
  5. // UPDATE users SET name='jinzhu 2', age=100, birthday='2016-01-01', updated_at = '2013-11-17 21:34:10' WHERE id=111
  6. facades.DB.Model(&User{}).Where("active = ?", true).Update("name", "hello")
  7. // UPDATE users SET name='hello', updated_at='2013-11-17 21:34:10' WHERE active=true;
  8. facades.DB.Model(&user).Updates(User{Name: "hello", Age: 18, Active: false})
  9. // UPDATE users SET name='hello', age=18, updated_at = '2013-11-17 21:34:10' WHERE id = 111;

删除

  1. facades.DB.Delete(&email)
  2. // DELETE from emails where id = 10;
  3. facades.DB.Where("name = ?", "jinzhu").Delete(&email)
  4. // DELETE from emails where id = 10 AND name = "jinzhu";
  5. facades.DB.Delete(&User{}, 10)
  6. // DELETE FROM users WHERE id = 10;

更多使用方法

详见 go-gorm/gorm