
gorm 中如何创建一对一关联
gorm 中的一对一关联指的是两个表之间只能有一条关联记录。例如,一个用户表和一个用户信息表,其中用户表中的每个用户只能有一个用户信息记录。要设置这种关联,我们需要在模型中定义两个模型之间的关系。
具体来说,在 user 模型中,我们需要添加一个 userinfo 字段,并指定以下信息:
在 userinfo 模型中,我们需要定义一个 userid 字段,并指定 foreignkey,将它关联到 user 模型中的主键。
代码示例:
系统特点:功能简洁实用。目前互联网上最简洁的企业网站建设系统!原创程序代码。非网络一般下载后修改的代码。更安全。速度快!界面模版分离。原创的分离思路,完全不同于其他方式,不一样的简单感受!搜索引擎优化。做了基础的seo优化。对搜索引擎更友好系统功能关于我们:介绍企业介绍类信息,可自由添加多个介绍栏目!资讯中心:公司或行业资讯类内容展示。可自由添加多个资讯内容!产品展示:支持类别设置,可添加产品图片
0
type user struct {
uid uint64 `gorm:"column:uid;primary_key"`
username string `gorm:"column:username;type:varchar(50);"`
status bool `gorm:"column:status;type:int(10)"`
userinfo userinfo `gorm:"foreignkey:uid;associationforeignkey:userid"`
}
type userinfo struct {
id uint64 `gorm:"column:id;primary_key"`
userid uint64 `gorm:"column:user_id;type:bigint(20)"`
age uint64 `gorm:"column:age;type:int(10)"`
openid string `gorm:"column:openid;type:varchar(250)"`
}通过这种方式,在查询 user 表时,我们可以使用 preload 或 related 方法来同时获取关联的 userinfo 记录。
示例代码:
orm, _ := gorm.Open(...)
// 使用 Preload
var user User
orm.Model(User{}).Preload("UserInfo").Find(&user, 1001)
fmt.Println(user.UserInfo.Age)
// 使用 Related
var u User
var userInfo UserInfo
orm.Find(&u, 1001)
orm.Model(&u).Related(&userInfo)以上就是Gorm 中如何实现一对一关联?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号