登录
首页 >  Golang >  Go问答

Go GORM 两个表请求

来源:stackoverflow

时间:2024-02-06 22:48:24 234浏览 收藏

哈喽!今天心血来潮给大家带来了《Go GORM 两个表请求》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!

问题内容

所以我是 gorm 新手,我有这个任务,其中有两个表 accountsusers

我得到了user.id,之后我需要从user表中获取accountid,我只需要获取与user.accountid具有相同id的帐户

type User struct{
    Id int
    AccountId int
}

type Account struct{
    Id int
    Balance int
}

看起来这应该是一个非常简单的调用,可以在单个请求中执行此操作,但我找不到此逻辑的简单实现。谁能帮帮我


正确答案


有多种方法可以做到这一点,下面是其中的几种。我假设 db 变量的类型为 *gorm.db。另外,我下面的代码适用于 mysql(postgresql 需要进行少量更改)。

仅加载带有联接的帐户数据

var account account
err := db.joins("join users on users.account_id = account.id").where("users.id = ?", user.id).first(&account).error

使用帐户数据加载用户对象

这里对 user 结构体进行了一些更改,但底层代码更简单。此外,它还会加载整个 user 对象以及相关的 account 对象。

type User struct{
    Id int
    AccountId int
    Account Account
}

var fullUser User
err := db.Preload("Account").First(&fullUser, user.Id).Error

本篇关于《Go GORM 两个表请求》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

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