GORM---关联外键查询

前几天的方案,是可以查询一个应用关联的用户及所属项目。

但有个问题,

那个外键里,会包含所有的外键关键信息,包括用户密码这些·····

所以,要用preload的闭包来作过滤。

这样看来起,是安全了不少。

但有个小尾巴没有解决:

就是用户密码那里是为空,如何能完全不包含呢????????

存疑,再解决。

 

//GetApplications 获取Applications
func (a *ApplicationRepository) GetApplications(PageNum uint, PageSize uint, total *uint64, where interface{}) *[]models.Application {
	var applications []models.Application
	db := a.Source.DB().Model(&applications).Where(&applications)
	db = db.Preload("User", func(db *gorm.DB) *gorm.DB {
		return db.Select("id,username")
	}).Preload("Project", func(db *gorm.DB) *gorm.DB {
		return db.Select("id,name,cn_name, description")
	})
	db = db.Order("updated_at  desc")
	db = db.Where(where)
	err := db.Offset((PageNum - 1) * PageSize).Limit(PageSize).Find(&applications).Error
	if err != nil {
		a.Log.Errorf("获取Applications失败", err)
	}
	err = db.Count(total).Error
	if err != nil {
		a.Log.Errorf("查询总数出错", err)
		// return err
	}
	return &applications
}

  GORM---关联外键查询

上一篇:使用GORM或MySql进行分组


下一篇:go操作mysql数据库