猿问

插入后无法检索任何关系表

我正在使用 与 ,我有如下所示的表格。我在检索关系表时遇到问题,例如,当我插入新用户时,所有内容都按下面的日志所示插入,但是一旦我尝试检索该用户,那么所有应该是带有外表的字段的字段要么是或。从我在数据库中看到的内容来看,这些表的值入并且实际上已经创建了外键,那么问题可能是什么呢?gormGolangnil[]


模型:


type User struct {

    ID          string `json:"id" gorm:"primaryKey"`

    CreatedAt   time.Time

    UpdatedAt   time.Time

    DeletedAt   gorm.DeletedAt `gorm:"index"`

    License     *License       `json:"license"`

    Statistics  []*Statistic   `json:"statistics"`

    App         *App           `json:"app"`

    Disabled    bool           `json:"disabled"`

    EncryptedID string         `json:"encrypted_id"`

}

//1 of the tables that doesn't get found but exists in database after creation

type License struct {

    gorm.Model

    Key               string  `json:"key"`

    DesktopHardwareID string  `json:"desktop_hardware_id"`

    MobileHardwareID  *string `json:"mobile_hardware_id"`

    Stripe            *Stripe  `json:"stripe" ,gorm:"foreignKey:LicenseID"`

    UserID            string  `json:"user_id"`

}


提前致谢


编辑 1 检索行的代码

var user models.User

//tokens[0] is the ID of the user

db.PostgresClient.Where("id = ?", tokens[0]).First(&user)


30秒到达战场
浏览 85回答 1
1回答

开心每一天1111

要从关系表中加载数据,可以使用该函数。Preload要加载所有第一级关联,您可以执行如下操作:db.PostgresClient.Preload(clause.Associations).Where("id = ?", tokens[0]).First(&user)但是,对于嵌套关联,您需要单独执行它们:db.PostgresClient.Preload("License.Stripe").Where("id = ?", tokens[0]).First(&user)您可以查看文档以获取更多详细信息。
随时随地看视频慕课网APP

相关分类

Go
我要回答