ilibs / gosql

🐥The very simple ORM library for Golang
MIT License
295 stars 39 forks source link

能不能支持一下分表 #17

Closed dmskys closed 4 years ago

dmskys commented 4 years ago

模型能不能提供一个设置表名的方法,支持一下分表?

fifsky commented 4 years ago

你可以在model结构体上重写TabelName方法,然后返回你实际需要的表名

dmskys commented 4 years ago

是这样的我有128张表,我不可能建立128个模型,把TabelName改成分表名称,我希望可以的是一个模型可以动态的设置表名。user_1 user_2 .... user_128 我希望只有一个UserModel 并可以在初始化时设置表名或者表号,本来想在结构体中给一个tabnum 发现这个会被当做查询条件,行不通。

fifsky commented 4 years ago
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}

dmskys commented 4 years ago

好的 我原来测试的就是加个Table string 没加db:"-" 非常感谢