GoFrame ORM组件针对于struct内嵌结构提供了良好的支持,包括参数传递、结果处理。例如:

type Base struct {
    Uid        int         `orm:"uid"`
    CreateAt   *gtime.Time `orm:"create_at"`
    UpdateAt   *gtime.Time `orm:"update_at"`
    DeleteAt   *gtime.Time `orm:"delete_at"`
}
type User struct {
    Base
    Passport   string `orm:"passport"`
    Password   string `orm:"password"`
    Nickname   string `orm:"nickname"`
}

并且,无论多少层级的struct嵌套,ORM的参数传递和结果处理都支持。



  • No labels

3 Comments

  1. 强哥这里有一个bug,如果内嵌的结构体里面有和原结构体名字一样的成员名,那么连表查出来的赋值有可能会混乱。如:

    type City struct {
    	*Country 
    	Uuid        string `json:"cityUuid"   orm:"ci_uuid"`
    	Name        string `json:"cityName"   orm:"ci_name"`
    	NameEn      string `json:"cityNameEn" orm:"ci_name_en"`
    	CountryUuid string `json:"-"`
    }
    
    type Country struct {
    	Uuid   string `json:"countryUuid"   orm:"co_uuid"`
    	Name   string `json:"countryName"   orm:"co_name"`
    	NameEn string `json:"countryNameEn" orm:"co_name_en"`
    }
    
    

    最后数据库连city表和country表查询时,即使做好了映射,他也可能会出现将country的name赋值到city的name中这类的问题。

    1. 是字段覆盖问题,你可以打印下g.Dump(City{})跟g.Dump(gjson.MustEncodeString(City{}))看看输出就知道了.

  2. goframe 如何实现sql查询出数据然后以 一对多 的形式存放到结构体中?