ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] # 用户和订单,一对多 创建表 ~~~ // 创建表 type User struct { Id int //默认主键自增,如果想改的话就 `orm:pk auto` Name string `orm:"size(100)"` User_order []*User_order `orm:"reverse(many)"` //一对多,多个订单 } //订单表 type User_order struct { Id int Order_data string `orm:size(100)` User *User `orm:"rel(fk)"` //反向一对多 } func init() { // set default database orm.RegisterDataBase("default", "mysql", "app:app@tcp(127.0.0.1:3306)/app?charset=utf8", 30) // 注册表,注册多个 orm.RegisterModel(new(User), new(User_order)) // 创建表 orm.RunSyncdb("default", true, true) } ~~~ 数据插入 ~~~ func insertorder() { o := orm.NewOrm() order := models.User_order{} //order属性赋值 order.Order_data = "this is order" //id为1的user user := models.User{Id: 1} //order的用户等于user的引用 order.User = &user //把order添加进去,返回插入的主键 id, err := o.Insert (&order) if err != nil { beego.Info("insert error") return } beego.Info("insert success, id = ", id) } func main() { //调用下数据库方法 insertorder() beego.Run() } ~~~ TODO ~~~ func queryOrder() { var orders []*models.User_order o := orm.NewOrm() //查表 qs := o.QueryTable("User_order") //指定条件查询所有 res, err := qs.Filter("user__id", 1).All(&orders) beego.Info("返回: ", res) if err != nil { beego.Info("错误: ", err) return } for _, order := range orders{ beego.Info("数据: ", order) } } func main() { //调用下数据库方法 queryOrder() beego.Run() } ~~~