1、一对一
* User模型中: Profile \*Profile`orm:"rel(one)"`正向关系,有外键字段
* Profile模型中: User \*User`orm:"reverse(one)"`反向关系,只是关系,没有外键
~~~
type User struct {
Id int
Name string
Img *Userimg `orm:"reverse(one)"` //一对一
}
type Userimg struct {
Id int
Name string
User *User `orm:"rel(one)"` //一对一
}
func init() {
orm.RegisterModel(new(User), new(Userimg))
}
~~~
2、一对多
* article模型中:User \*User`orm:"rel(fk)"`正向关系,有外键,外键在多的一方
* user模型中:Articles \[\]\*Articles `orm:"reverse(many)" 反向关系,没有外键
一对多,外键在多的一方
~~~
type User struct {
Id int
Name string
Ather []*Ather `orm:"reverse(many)"` //一对多
}
type Ather struct {
Id int
Name string
User *User `orm:"rel(fk)"` //一对多
}
func init() {orm.RegisterModel(new(User), new(Ather))
}
~~~
3、多对多
* post模型中:Tags \[\]\*Tag`orm:"rel(m2m)"`正向关系,没有外键
* tag模型中:Posts \[\]\*Post`orm:"reverse(many)"`反向关系,没有外键
![](https://img.kancloud.cn/00/ec/00ec1854511a42470509179752197a8d_869x476.png)