beego orm中的表结构一对多多一一关系的问题

新手上路,请多包涵

"reverse(many)" // 设置一对多的反向关系是指就是 多对一的关系吗? orm:"rel(m2m)"` //设置一对多关系 m2m不是many to many意思吗?关于beego orm表结构一对多多对一的关系看懵了,有go大神指点一二嘛,万分感激!
原文地址:https://github.com/astaxie/bu...

type Userinfo struct {

Uid     int `PK` //如果表的主键不是id,那么需要加上pk注释,显式的说这个字段是主键
Username    string
Departname  string
Created     time.Time

}

type User struct {

Uid          int `PK` //如果表的主键不是id,那么需要加上pk注释,显式的说这个字段是主键
Name        string
Profile     *Profile   `orm:"rel(one)"` // OneToOne relation
Post        []*Post `orm:"reverse(many)"` // 设置一对多的反向关系

}

type Profile struct {

Id          int
Age         int16
User        *User   `orm:"reverse(one)"` // 设置一对一反向关系(可选)

}

type Post struct {

Id    int
Title string
User  *User  `orm:"rel(fk)"`
Tags  []*Tag `orm:"rel(m2m)"`    //设置一对多关系

}

type Tag struct {

Id    int
Name  string
Posts []*Post `orm:"reverse(many)"`

}

阅读 8.5k
1 个回答

首先,这个文档里的案例是来自beego官方文档的,但是,有一个地方复制错了...以下是源文档:

package main

import (
    "github.com/astaxie/beego/orm"
)

type User struct {
    Id          int
    Name        string
    Profile     *Profile   `orm:"rel(one)"` // OneToOne relation
    Post        []*Post `orm:"reverse(many)"` // 设置一对多的反向关系
}

type Profile struct {
    Id          int
    Age         int16
    User        *User   `orm:"reverse(one)"` // 设置一对一反向关系(可选)
}

type Post struct {
    Id    int
    Title string
    User  *User  `orm:"rel(fk)"`    //设置一对多关系
    Tags  []*Tag `orm:"rel(m2m)"`
}

type Tag struct {
    Id    int
    Name  string
    Posts []*Post `orm:"reverse(many)"`
}

func init() {
    // 需要在init中注册定义的model
    orm.RegisterModel(new(User), new(Post), new(Profile), new(Tag))
}

可以看到 设置一对多关系的不是m2m,而是fk,是写错了,m2m的确是多对多关系

例子里的正向关系的设置是在Post里的第三个字段初设置的orm:"rel(fk)",即post表有一个字段user关联着user表主键;

tags同理。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题