gorm 关联查询问题

18328048335 · · 1316 次点击
```golang db.Model(& Employee).Join("Company", "name=?","CompanyA").First(& results) ``` 使用Join内关联就可以查找了
#1
更多评论
还有一种做法,可以做双向一对一关联,就是把belongs to 和hasOne两种关联关系都用上 ```golang // Employee // @Description 雇员 type Employee struct { ID uint `gorm:"primary_key;autoIncrement:true"` Name string //[belongs to][一对一]声明写法如下 CID int //Company ID C Company `gorm:"foreignKey:CID"` // Company // @Description: 公司 type Company struct { ID uint `gorm:"primary_key;autoIncrement:true"` Name string `gorm:"unique"` Employee *Employee } ``` 这里需要注意的就是循环引入问题,所以需要再hasOne关系上使用指针类型,否则变异报错! 剩下的就和普通的预加载一样了 ```golang var company Company db.Model(& Company).Preload("Employee").where("name=?","CompanyA").First(& company) log.Println(company.Employee) ```
#2
补充说一下: 做双向关联,是做了两次查询的;而Join是做了sql语句的join后一条语句检索的,这是两个方案的区别
#3