Golang Gorm不从关联表中检索数据
我正在使用MySQL使用GORM制作杜松子酒应用程序。为了在Gorm模型中定义A 属于
关系,您必须执行以下操作(示例从Gorm Docs中获取):
// `User` belongs to `Company`, `CompanyID` is the foreign key
type User struct {
gorm.Model
Name string
CompanyID int
Company Company
}
type Company struct {
ID int
Name string
}
这就是我对我的模型所做的:
type Record struct {
Barcode string `json:"barcode" gorm:"size:48;unique;not null" sql:"index"`
Name string `json:"name" gorm:"size:160;unique;not null"`
ArtistID uint `json:"artist_id"`
Artist Artist `gorm:"foreignKey:ArtistID;references:ID"`
CategoryID uint `json:"category_id"`
Category Category `gorm:"foreignKey:CategoryID;references:ID"`
NumOfRecords int `json:"num_of_records" gorm:"not null"`
OriginalReleaseDate *utils.Date `json:"original_release_date" gorm:"default:null;type:date"`
ReissueReleaseDate *utils.Date `json:"reissue_release_date" gorm:"default:null;type:date"`
SideColor *string `json:"side_color" gorm:"default:null"`
BarcodeInRecord *bool `json:"barcode_in_record" gorm:"default=true"`
gorm.Model
}
type Category struct {
Name string `json:"name" gorm:"size:60;unique;not null"`
Description string `json:"description" gorm:"size:120"`
Parent uint `json:"parent" gorm:"default:null"`
Active bool `json:"active" gorm:"default:true"`
gorm.Model
}
type Artist struct {
Name string `json:"name" gorm:"size:120;unique;not null"`
Type string `json:"type" gorm:"default:null"`
CountryOfOrigin string `json:"countryOfOrigin" gorm:"default:null"`
gorm.Model
}
但是,当取回数据时,这两个协会没有被人口组成:
{
"data": {
"barcode": "1231231231231292",
"name": "ABCD 12342",
"artist_id": 2,
"Artist": {
"name": "",
"type": "",
"countryOfOrigin": "",
"ID": 0,
"CreatedAt": "0001-01-01T00:00:00Z",
"UpdatedAt": "0001-01-01T00:00:00Z",
"DeletedAt": null
},
"category_id": 9,
"Category": {
"name": "",
"description": "",
"parent": 0,
"active": false,
"ID": 0,
"CreatedAt": "0001-01-01T00:00:00Z",
"UpdatedAt": "0001-01-01T00:00:00Z",
"DeletedAt": null
},
"num_of_records": 2,
"original_release_date": "1965-02-24",
"reissue_release_date": null,
"side_color": null,
"barcode_in_record": null,
"ID": 1,
"CreatedAt": "2022-04-25T12:53:32.275578-04:00",
"UpdatedAt": "2022-04-25T12:53:32.275578-04:00",
"DeletedAt": null
}
}
有什么想法发生了什么事?
I'm working on a Gin app using Gorm with MySQL. In order to define a belongs to
relationship in a Gorm Model, you have to do the following (example taken from Gorm docs):
// `User` belongs to `Company`, `CompanyID` is the foreign key
type User struct {
gorm.Model
Name string
CompanyID int
Company Company
}
type Company struct {
ID int
Name string
}
That's what I did with my models:
type Record struct {
Barcode string `json:"barcode" gorm:"size:48;unique;not null" sql:"index"`
Name string `json:"name" gorm:"size:160;unique;not null"`
ArtistID uint `json:"artist_id"`
Artist Artist `gorm:"foreignKey:ArtistID;references:ID"`
CategoryID uint `json:"category_id"`
Category Category `gorm:"foreignKey:CategoryID;references:ID"`
NumOfRecords int `json:"num_of_records" gorm:"not null"`
OriginalReleaseDate *utils.Date `json:"original_release_date" gorm:"default:null;type:date"`
ReissueReleaseDate *utils.Date `json:"reissue_release_date" gorm:"default:null;type:date"`
SideColor *string `json:"side_color" gorm:"default:null"`
BarcodeInRecord *bool `json:"barcode_in_record" gorm:"default=true"`
gorm.Model
}
type Category struct {
Name string `json:"name" gorm:"size:60;unique;not null"`
Description string `json:"description" gorm:"size:120"`
Parent uint `json:"parent" gorm:"default:null"`
Active bool `json:"active" gorm:"default:true"`
gorm.Model
}
type Artist struct {
Name string `json:"name" gorm:"size:120;unique;not null"`
Type string `json:"type" gorm:"default:null"`
CountryOfOrigin string `json:"countryOfOrigin" gorm:"default:null"`
gorm.Model
}
yet when getting data back, those two associations are not being populated:
{
"data": {
"barcode": "1231231231231292",
"name": "ABCD 12342",
"artist_id": 2,
"Artist": {
"name": "",
"type": "",
"countryOfOrigin": "",
"ID": 0,
"CreatedAt": "0001-01-01T00:00:00Z",
"UpdatedAt": "0001-01-01T00:00:00Z",
"DeletedAt": null
},
"category_id": 9,
"Category": {
"name": "",
"description": "",
"parent": 0,
"active": false,
"ID": 0,
"CreatedAt": "0001-01-01T00:00:00Z",
"UpdatedAt": "0001-01-01T00:00:00Z",
"DeletedAt": null
},
"num_of_records": 2,
"original_release_date": "1965-02-24",
"reissue_release_date": null,
"side_color": null,
"barcode_in_record": null,
"ID": 1,
"CreatedAt": "2022-04-25T12:53:32.275578-04:00",
"UpdatedAt": "2022-04-25T12:53:32.275578-04:00",
"DeletedAt": null
}
}
any idea what's going on there?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
代码看起来像是将数据保存到数据库的样子?
我猜您可能需要使用
FullSaveasSociations
类似的内容:
要收回数据,您需要使用预加载。
您也可以用来
加载它们。您可以将其与其他预紧力一起使用。
https://gorm.io/docs/preload.html.html #html#content-inner
What does the code look like that is saving the data to the db?
I'm guessing that you probably need to use
FullSaveAssociations
something like this:
To get the data back, you need to use Preloads.
you can also use
to load them all. You can use this with other Preloads to go deeper.
https://gorm.io/docs/preload.html#content-inner