Open PhoenixL0911 opened 1 year ago
db := gormDb.Scopes(func(db *gorm.DB) *gorm.DB {
// 自定义表
return db.Table("users")
})
query, _ := gplus.NewQuery[User]()
// 传入Db
list, db := gplus.SelectList[User](query, gplus.Db(db))
if db.Error != nil {
return
}
for _, item := range list {
fmt.Println(item)
}
这样是否能满足你的要求
场景如下:通过租户或者ID首位分表(如user_1、user_2、user_3等),这种场景下只有前端的请求到来的时候,才知道应该具体去查询哪一张表,我在代码里没有看到关于表名的设置,目前我用的是GORM原生的Scopes方法去动态加载表名,可以为这个需求添加支持吗?
db := gormDb.Scopes(func(db *gorm.DB) *gorm.DB { // 自定义表 return db.Table("users") }) query, _ := gplus.NewQuery[User]() // 传入Db list, db := gplus.SelectList[User](query, gplus.Db(db)) if db.Error != nil { return } for _, item := range list { fmt.Println(item) }
这样是否能满足你的要求
场景如下:通过租户或者ID首位分表(如user_1、user_2、user_3等),这种场景下只有前端的请求到来的时候,才知道应该具体去查询哪一张表,我在代码里没有看到关于表名的设置,目前我用的是GORM原生的Scopes方法去动态加载表名,可以为这个需求添加支持吗?
我目前就是这样子做的,但是这一部分的逻辑代码太多重复了。另外还有个,能否再添加一组QueryCond,类似mybatis plus的 boolean condition
那样,根据bool条件去决定是否要拼接sql。
可以的,你感兴趣的话,也可以提交pr
场景如下:通过租户或者ID首位分表(如user_1、user_2、user_3等),这种场景下只有前端的请求到来的时候,才知道应该具体去查询哪一张表,我在代码里没有看到关于表名的设置,目前我用的是GORM原生的Scopes方法去动态加载表名,可以为这个需求添加支持吗?