package one
import "github.com/astaxie/beego/orm"
type ArticleMany struct {
Id int `orm:"pk;auto"`
Name string
Desc string
UserOne *UserOne `orm:"rel(fk)"`
}
func (a *ArticleMany) TableName() string{
return "article_many"
}
func init() {
orm.RegisterModel(new(ArticleMany))
}
package one
import "github.com/astaxie/beego/orm"
// 一对一模型定义
type UserOne struct {
Id int `orm:"pk;auto"`
Username string
Age int
ProfileOne *ProfileOne `orm:"reverse(one)"` // 只是用来反向查询
ArticleMany []*ArticleMany `orm:"reverse(many)"` // 一对多
}
type ProfileOne struct {
Id int `orm:"pk;auto"`
Phone string
UserOne *UserOne `orm:"rel(one);on_delete(cascade)"` // user_one_id
}
func (c *UserOne) TableName() string{
return "user_one"
}
func (c *ProfileOne) TableName() string{
return "profile_one"
}
func init(){
orm.RegisterModel(new(UserOne),new(ProfileOne))
}
controller
o := orm.NewOrm()
//插入数据
user_one := one.UserOne{Username: "林小暖",Age: 2}
o.Insert(&user_one)
uid := 2
user_one := one.UserOne{Id: uid}
article_many := one.ArticleMany{Name: "灌篮高手",Desc: "热血",UserOne: &user_one}
o.Insert(&article_many)
c.Ctx.WriteString("成功")
// 查询
// 1.已知文章id,查询文章信息和作者信息,正向查询
aid := 1
article_many := one.ArticleMany{Id:aid}
qs := o.QueryTable("article_many")
qs.Filter("id",aid).RelatedSel().One(&article_many) //
message_map := map[string]interface{}{}
message_map["code"] = 10001
message_map["data"] = article_many
c.Data["json"] = message_map
c.ServeJSON()
c.Ctx.WriteString("成功")
// 2. 已知作者id,查询该作者写过那些文章,正向查询
uid := 2
qs := o.QueryTable("article_many")
article_manys := []one.ArticleMany{}
qs.Filter("user_one_id",uid).RelatedSel().All(&article_manys)
message_map := map[string]interface{}{}
message_map["code"] = 10001
message_map["data"] = article_manys
c.Data["json"] = message_map
c.ServeJSON()
c.Ctx.WriteString("成功")
// 3. 已知文章id,查询该文章的作者,通过user_one查询,反向查询
aid := 2
user_one := one.UserOne{}
qs := o.QueryTable("user_one")
qs.Filter("ArticleMany__Id",aid).One(&user_one)
message_map := map[string]interface{}{}
message_map["code"] = 200
message_map["data"] = user_one
c.Data["json"] = message_map
c.ServeJSON()