gorm 使用

Fork Me On Github
zodream 编程技术 Go 2019年06月

开启日志调试sql语句

go
  
var db *gorm.DB
db.LogMode(true)
12

去除自带的软删除查询

当 struct 结构中带有 DeletedAt 属性,在查询的时候就会默认加上 deleted_at IS NULL,但是我的数据表 deleted_at 的默认值是 0,因此需要使用 , 去除默认查询加上自己的查询

go
 
db.Unscoped().Where("deleted_at=0")
1

默认查询的表会自动使用 结构名 的复数

可以定义 TableName 方法自定义表名

go
       
type User struct {
    ID uint
}

func (User) TableName() string {
    return "blog"
}
1234567

关联查询

使用 Preload("User") 进行关联查询

go
         
type Blog struct {
    ID uint
    User User
    UserID int
}

var data []Blog

db.Preload("User").Find(&data)
123456789

使用 Related 进行关联查询, 需要把 Blog 查询好, 然后根据 Blog 定义中指定的 FOREIGNKEY 去查找 User, 如果没定义, 则调用时需要指定

go
  
db.First(&data)
db.Model(&data).Related(&data.User).Find(&data.User)
12

使用 Association 进行关联查询, 需要把 Blog 查询好, 然后根据 Blog 定义中指定的 AssociationForeignKey 去查找 User, 必须定义

go
  
db.First(&data)
db.Model(&data).Association("User").Find(&data.User)
12
点击查看全文
0 360 0