我最近在学习gorm,正接触到关联模式。其中,我对belongs to的示例定义如下:
```go
// 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"`
}
```
在继续学习到查询时,我了解到了在Employees表中查Company信息需要使用:
```go
db.Model(&employee).Association("C").Find(&employee.C)
```
这样的写法,才能够查询到完整的Employee信息。现在我的问题是,如何查询工作于Name=“CompanyA”的公司的所有雇员信息?我能想到的是分两步:
```go
//1. 先根据公司名查公司id
db.First(&company, "name=?", "CompanyA")
//2. 再用得到的company.ID在用户表中查
db.Preload("C").Find(&results, "c_id=?", company.ID)
```
这样确实可行,但是我觉得会不会有更加简单的查询方式,一步就搞定的那种。官方文档看的很懵,网上搜索也没找到想要的东西,请问大家还知道别的写法吗?
有疑问加站长微信联系(非本文作者)