Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
PhoenixL0911 opened this issue Sep 6, 2023 · 3 comments
Labels
enhancement New feature or request

Comments

@PhoenixL0911
Copy link
Contributor

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

@afumu
Copy link
Member

afumu commented Sep 7, 2023

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

@PhoenixL0911
Copy link
Contributor Author

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。

@afumu
Copy link
Member

afumu commented Sep 7, 2023

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

@afumu afumu added the enhancement New feature or request label Sep 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants