前几天的方案,是可以查询一个应用关联的用户及所属项目。
但有个问题,
那个外键里,会包含所有的外键关键信息,包括用户密码这些·····
所以,要用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 }