登录
首页 >  Golang >  Go问答

关系受限于架构

来源:stackoverflow

时间:2024-03-17 22:48:28 492浏览 收藏

本文探讨了在使用 GORM 嵌套模型时遇到的“架构 loginactivity 不支持的关系”错误。此错误源于在使用 Preload 预加载嵌套模型时,关系成员的名称与模型中表示的关系不匹配。文章提供了正确的查询方式,即使用 Preload("Activity.LoginActivities.Device") 代替 Preload("Activity.LoginActivities.DeviceInfos"),以预加载 LoginActivity 模型中的 Device 关系。

问题内容

我有四个嵌套模型(此处简化):

type client struct {
    gorm.model
    uuid                   uuid.uuid `gorm:"type:uuid"`
    activity               activity 
}

type activity struct {
    gorm.model
    clientid        uint
    loginactivities []loginactivity
}

type loginactivity struct {
    gorm.model
    activityid uint
    uuid       uuid.uuid
    timestamp  time.time
    device     deviceinfo
}

type deviceinfo struct {
    gorm.model
    loginactivityid uint
    platform        string
}

我想检索所有嵌套模型:

database.db.
    Where("uuid = ?", clientID).
    Preload("Activity.LoginActivities.DeviceInfos").
    First(&client). 
    Error

但是,我收到错误 deviceinfos:架构 loginactivity 不支持的关系

是模型设置错误还是查询错误?


正确答案


您已使用 Preload("Activity.LoginActivities.DeviceInfos"),但 LoginActivity 中表示关系的成员是 Device

您应该使用 Preload("Activity.LoginActivities.Device") 进行预加载

今天关于《关系受限于架构》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>