为结构 main.Article 的字段 Author 找到无效字段
invalid field found for struct main.Article's field Author
我的应用程序中有以下模型:
import "gorm.io/gorm"
type User struct {
gorm.Model
Username string
Password string
Email string
Token string
}
type Article struct {
gorm.Model
Author User `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"`
Text string
views int
likes int
}
但是我收到这个错误:
[错误] 为结构 main.Article 的作者字段找到无效字段,需要为关系定义一个有效的外键,或者它需要实现 Valuer/Scanner 接口
修复相对容易,唯一遗漏的问题已经被错误提示:您没有提供外键约束提示做 GORM。按照官方文档here,我们可以这样简单地做:
type Article struct {
gorm.Model
AuthorID uint
Author User `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"`
Text string
views int
likes int
}
因此 AuthorID 字段实际上将为 GORM 突出显示将引用用户 table.
的 FK 字段
但是,您可以考虑在 Articles 的 User 结构中添加一个 link,这样您就可以 Preload all articles of Author(s). See the link here,但将实现留给您尝试。
我的应用程序中有以下模型:
import "gorm.io/gorm"
type User struct {
gorm.Model
Username string
Password string
Email string
Token string
}
type Article struct {
gorm.Model
Author User `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"`
Text string
views int
likes int
}
但是我收到这个错误:
[错误] 为结构 main.Article 的作者字段找到无效字段,需要为关系定义一个有效的外键,或者它需要实现 Valuer/Scanner 接口
修复相对容易,唯一遗漏的问题已经被错误提示:您没有提供外键约束提示做 GORM。按照官方文档here,我们可以这样简单地做:
type Article struct {
gorm.Model
AuthorID uint
Author User `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"`
Text string
views int
likes int
}
因此 AuthorID 字段实际上将为 GORM 突出显示将引用用户 table.
的 FK 字段但是,您可以考虑在 Articles 的 User 结构中添加一个 link,这样您就可以 Preload all articles of Author(s). See the link here,但将实现留给您尝试。