背景:多表联查,定义model的属性名和数据库表字段名有可能出现不相同,需要做映射赋值。
目前只用到查询,写入暂时没有实现。
定义的proto文件中的model片段,其中看单据编号DocNo.
type NormalData struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 单据编号
DocNo string `protobuf:"bytes,1,opt,name=oaDocNo,proto3" json:"oaDocNo,omitempty"`
// 提交时间
CreateAt string `protobuf:"bytes,2,opt,name=createAt,proto3" json:"createAt,omitempty"`
}
定义的表model片段。
type UserModel struct {
ID string
CreateAt time.Time `gorm:"autoCreateTime"`
}
当我们希望查询时ID的值能映射DocNo上时,查询的关键其实是as关键字。
resp = &pb.NormalData{}
selectArray := []string{
"user_model.id as DocNo",
"......省略"
}
db := utils.GormDB.Model(&models.UserModel{})
db.Select(selectArray)
db.Joins("....省略")
db.Where("....省略")
....省略
err = db.Find(&resp).Error
网友评论