查询与“有一个”关联(一对一)

在尝试确定哪个 ORM 库最适合我的需要时,我正在玩 Gorm。


值得一提的是,我目前正在使用 Sqlite。


按照指南,我创建了两个结构:


  type Color struct {

    gorm.Model

    UserID uint

    Name   string

}


//User struct define a basic user model

type User struct {

    gorm.Model

    Username     string

    Email        string

    FirstName    string

    LastName     string

    Password     string

    CreationDate time.Time

    DOB          time.Time

    IgnoreMe     int   `gorm:"-"` // Ignore this field

    Color        Color `gorm:"foreignkey:ColorRefer"`

    ColorRefer   uint

}

当我创建一个数据库时


func CreateTables() {

user := dm.User{}

color := dm.Color{}

GormDB.CreateTable(&color)

GormDB.CreateTable(&user)

GormDB.Model(&user).AddForeignKey("ColorRefer", "colors(id)", "CASCADE", "CASCADE")

}


或与:


func CreateTables() {

    GormDB.AutoMigrate(&dm.User{},&dm.Color{})

}

遗憾的是,它没有像我期望的那样工作并自动创建外键,但是当我手动创建外键时它可以工作。


我的主要问题是当我试图查询用户时


//QueryByStructExample query users table by the struct non-zero (non-default) fields.

    func QueryByStructExample(userStruct dm.User) []dm.User {

        var results []dm.User

        GormDB.Where(userStruct).Find(&results)

        return results

    }

我创建了以下函数,试图通过电子邮件查询用户,颜色属性是我的颜色结构,我尝试使用模型、相关和关联函数进行大量操作,但似乎没有任何效果,而且(我避免有意使用连接)。最终结果是它查询我的用户但没有颜色(只有我的 colorRefer 中的 ID)


有什么建议吗?


汪汪一只猫
浏览 95回答 1
1回答

摇曳的蔷薇

你的意思是预加载 Color 结构?如果是,您是否尝试过这样查询GormDB.Preload('Color').Where(userStruct).Find(&results)
打开App,查看更多内容
随时随地看视频慕课网APP