关于GORM中的Preload

type User struct {
	Id         int `gorm:"primary_key"`
	Username   string
	Email      string
	Mobile     string
	CreateTime string
	UpdateTime string
}
type Team struct {
	Id           int
	Name         string // 名称
	Member       string // 成员
}
type Somet struct {
	Id           int
	ApprovalId   int // 审批人id
	Approval     User
	TeamId       int // 组id
	Team         Team
	State        int // 状态
}

数据库中仅存Somet的Id、ApprovalId、TeamId、State字段。
Preload可做关联查询。

relation []Somet
err =DBM.Model(&Somet{}).Where("xxx = ? ", xxx).
		Preload("Team").Preload("Approval").Find(&relation).Error

类似于ORM中的RelatedSel

func (m *Ticket) GetRiskTicketById(id int) Ticket {
	result := Ticket{}
	err := Model.QueryTable(new(Ticket)).RelatedSel().Filter("id", id).One(&result)
	if err != nil {
		return result
	}
	return result
}
type Smoet struct {
	Id           int                           `orm:"pk" json:"Id,string"`
	SeparationId int                           // 数据访问申请id
	Approval     *Users                  `json:"Approval" orm:"null;rel(one);on_delete(do_nothing)"` // 审批人id
	Team         *Team `json:"Team" orm:"null;rel(one);on_delete(do_nothing)"`
	State        int                           // 状态
}

在这里插入图片描述

type State struct {
	Id    int
	Name  string
	State int
}

type Ticket struct {
	Id          int `json:"Id,string" orm:"pk"`
	No          string
	State       *TicketState `json:"State"orm:"column(state);null;rel(one);on_delete(do_nothing)"`
	}

你可能感兴趣的:(数据库)