gorm 使用

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

开启日志调试sql语句

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

去除自带的软删除查询

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

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

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

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

type User struct {
    ID uint
}

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

关联查询

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

type Blog struct {
    ID uint
    User User
    UserID int
}

var data []Blog

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

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

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

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

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