gorm 关联查询问题

18328048335 · · 1407 次点击
我用了1楼的这个方式,观察执行的sql语句发现它不知为何用了left join,这样会把所有的Employee都查出来。如何更改为inner join呢?
#5
更多评论
```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