【发布时间】:2021-01-28 05:11:44
【问题描述】:
我将 GORM 与 Fiber 结合使用。使用预加载的clause.Associations 查询所有用户时,出现以下错误:
can't preload field @@@as@@@ for entities.User
这是什么意思?如果没有clause.Associations 的preload,它可以正常工作,但不会显示一对一的关联。
func UsersGetAll(c *fiber.Ctx) error {
db := database.DBConn
users := []entities.User{}
records := db.Preload(clause.Associations).Find(&users)
if records.Error != nil {
log.Println(records.Error)
return c.Status(500).SendString(records.Error.Error())
}
return c.JSON(records.Value)
}
【问题讨论】:
-
什么是clause.Associations?你能展示你在帖子中使用的模型吗?
-
clause.Associations来自 GORM 文档 (gorm.io/docs/preload.html#Preload-All),基本上是表达式@@@as@@@用于预先加载所有关联(没有一对多和多对多)。用户模型由Name和Age等常规字段组成,但也包括Address类型的Address等一对一关联,我想急切地预加载它但不起作用。但是,在preload中明确包含一对一关联仍然有效。