开启日志调试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)
Reprint please keep the original link: https://zodream.cn/blog/id/58.html