go-gorm / gen

Gen: Friendly & Safer GORM powered by Code Generation
https://gorm.io/gen/
MIT License
2.23k stars 293 forks source link

在生成的gen.go文件中Query下对象非私有化 #1195

Closed wensenz closed 1 month ago

wensenz commented 1 month ago

比如我有一张users表。 gen.go 会产生如下 type Query struct { db *gorm.DB Users users } 而users 则是 users.gen.go文件下的对象 // users 用户表 type users struct { usersDo

ALL         field.Asterisk
ID          field.String // id
Name    field.String // 公司名称

}

我期望users.gen.go的users,使用Users公有的方式。 方便做后续的封装。 我就能实现: user, err := u.WithContext(ctx).Where(Users.ID.Eq(10)).First(), 而无需暴露query.Users。

qqxhb commented 1 month ago

Users.ID.Eq(10) query.Users.ID.Eq(10)

看着差异不大?

wensenz commented 1 month ago

Users.ID.Eq(10) query.Users.ID.Eq(10)

看着差异不大?

主要不是这个, 而是不希望直接暴露 query.Users, 想通过封装后再暴露。

问题解决: models := g.GenerateModel models.QueryStructName = "自定义QueryStructName"