go-ozzo / ozzo-dbx

A Go (golang) package that enhances the standard database/sql package by providing powerful data retrieval methods as well as DB-agnostic query building capabilities.
MIT License
634 stars 90 forks source link

想实现一个类似yii在父类定义的save方法 #33

Closed kaikaige closed 7 years ago

kaikaige commented 7 years ago

小白一枚,想在Model 里面实现个Save方法,然后包含Model的struct都可以直接使用Save(),减少一些重复性的代码,谢谢

package main

import (
    "fmt"
    "github.com/go-ozzo/ozzo-dbx"
    _ "github.com/go-sql-driver/mysql"
)

var (
    db, err = dbx.Open("mysql", "root:123456@tcp(localhost:3306)/jd?charset=utf8")
)

type Model struct {
}

func (this *Model) Save() {
    db.Model(this).Insert() //此处的this是我的问题,如何让他指向的“子类”(不知道该如何称呼包含它的struct)
}

type User struct {
    Model  //包含Model
    Username string
    Password string
    Status   int
}

func (c User) TableName() string {
    return "user"
}

func main() {
    user := User{
        Username: "admin3",
        Password: "123456",
        Status:   0,
    }
    err := user.Save()   //save会失败
}
qiangxue commented 7 years ago

这个在go里是不好实现的--因为它不支持继承关系。