Closed dmskys closed 4 years ago
你可以在model结构体上重写TabelName方法,然后返回你实际需要的表名
是这样的我有128张表,我不可能建立128个模型,把TabelName改成分表名称,我希望可以的是一个模型可以动态的设置表名。user_1 user_2 .... user_128 我希望只有一个UserModel 并可以在初始化时设置表名或者表号,本来想在结构体中给一个tabnum 发现这个会被当做查询条件,行不通。
type Users struct {
Id int `json:"id" db:"id"`
Name string `json:"name" db:"name"`
CreatedAt time.Time `json:"created_at" db:"created_at"`
Table string `db:"-"`
}
func (u *Users) TableName() string {
return u.Table
}
func (u *Users) PK() string {
return "id"
}
func main() {
config.Bootstrap()
user := &Users{
Table: "users",
}
row := gosql.Model(user).Where("id = 1").Get()
fmt.Println(row)
}
我测试是可以的,你可以使用db:"-" 来忽略解析,当然你甚至可以设置一个私有属性,然后给UserModel 添加一个SetTableName(name string) { u.tableName = name}
好的 我原来测试的就是加个Table string 没加db:"-"
非常感谢
模型能不能提供一个设置表名的方法,支持一下分表?