查询 'has one' 关联(一对一)
Query with 'has one' association (one-to-one)
在尝试确定哪个 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
}
我创建了以下函数来尝试通过电子邮件 使用颜色 属性 查询用户,这是我的颜色结构 我尝试了很多Model、Related 和 Association 功能,似乎没有任何效果(我避免有意使用连接)。
最终结果是它查询了我的用户但没有颜色(只有我的 colorRefer 中有 ID)
有什么建议吗?
您是说预加载 Color 结构吗?如果是,您是否尝试过这样查询
GormDB.Preload('Color').Where(userStruct).Find(&results)
在尝试确定哪个 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
}
我创建了以下函数来尝试通过电子邮件 使用颜色 属性 查询用户,这是我的颜色结构 我尝试了很多Model、Related 和 Association 功能,似乎没有任何效果(我避免有意使用连接)。 最终结果是它查询了我的用户但没有颜色(只有我的 colorRefer 中有 ID)
有什么建议吗?
您是说预加载 Color 结构吗?如果是,您是否尝试过这样查询
GormDB.Preload('Color').Where(userStruct).Find(&results)