gorm-plus icon indicating copy to clipboard operation
gorm-plus copied to clipboard

目前似乎没有看到有关动态表相关的支持,可以添加这个需求的支持吗

Open ColorDreams opened this issue 2 years ago • 3 comments

场景如下:通过租户或者ID首位分表(如user_1、user_2、user_3等),这种场景下只有前端的请求到来的时候,才知道应该具体去查询哪一张表,我在代码里没有看到关于表名的设置,目前我用的是GORM原生的Scopes方法去动态加载表名,可以为这个需求添加支持吗?

ColorDreams avatar Sep 06 '23 08:09 ColorDreams

image

	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方法去动态加载表名,可以为这个需求添加支持吗?

afumu avatar Sep 07 '23 04:09 afumu

image

	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。

ColorDreams avatar Sep 07 '23 04:09 ColorDreams

可以的,你感兴趣的话,也可以提交pr

afumu avatar Sep 07 '23 05:09 afumu