当前位置: 首页 > 知识库问答 >
问题:

GORM以一对一的关系从两个表中获取数据

戎桐
2023-03-14

我的Go应用程序上有这两个结构

type Customer struct {
    ID             uint       `json: "id" gorm:"primary_key"`
    Name           string     `json: "name"`
    AddressId      int        `json: "addressId"`
    Address        Address    `json: "address"`
}

type Address struct {
    ID        uint   `json: "id" gorm:"primary_key"`
    ZipCode   string `json: "zipCode"`
    StreetOne string `json: "streetOne"`
    StreetTwo string `json: "streetTwo"`
    City      string `json: "city"`
    State     string `json: "state"`
    Number    string `json: "number"`
}

我在前端使用Angular,所以如果我不需要提出两个请求来获得客户然后是地址,这将是非常实用的。

我在这里搜索了,但没有找到一对一关系的示例,有没有办法让这个查询不仅获得客户数据,而且还获得地址?

func (u customer) GetCustomers(params string) ([]models.Customer, error) {
    customers := []models.Customer{}
    u.db.Preload("Addresses").Find(&customers)
    return customers, nil
}

共有1个答案

杨建章
2023-03-14

当您使用Preload函数时,您向它传递要加载数据的字段的名称。

在您的情况下,它应该是这样的(因为您在客户结构中的字段被命名为地址):

u.db.Preload("Address").Find(&customers)

您可以查看文档以了解更多详细信息。

 类似资料:
  • 我知道如何从关系中获得Laravel雄辩的ORM数据:一对一、一对多和多对多。这里没什么大不了的。这个问题是我不知道是否可能的,或者,也许我在学习中逃脱了。 一对多关系的示例: 表“用户” null 表“电话” ID id_user 电话号码 如何在运行时从两个表中获取所有字段 我知道如何使用原始sql查询或查询生成器来获取这些信息,但是有可能通过雄辩的关系来获取它们吗? 提前谢了。

  • 我们有一个功能表和一个层次表,一个层次可以有多个功能。所以想要查询并获得输出作为 字节对应于tierID和特征名称列表 设法从一个老帖子中得到了答案 此外,我们想得到一张

  • 我有3个表、、。 是表中的主键,也是、表中的主键和外键。我有一个sql,它在这三个表上留下了外部连接,以从三个表中获取不同的列值。 问题:/表首次为空。这2个表将由其他进程更新。在对obj执行一些udpates并将其保存后,创建了一个新行和,其cstid为。 注意:对于表中的特定,存在一行或多行 必需的解决方案:我不希望在/表中保留一行,除非在/中存在来自的的一行。 映射:customer.hbm

  • 问题内容: 我有两个表A和Band,A与B之间的关系是A —>一对多—> B 通常,对于A的每条记录,我都有一个B的记录。 我正在尝试编写一个查询,该查询将为我提供A的 唯一 记录列表,其中B中的 记录 超过 一个(多个) 。 我很困惑,因为我只完成了基本的sql查询,而这对我来说似乎很复杂。 可以请一个人指导我正确答案或给我解决方案。 编辑: 好吧,我尝试了下面的事情,它给了我一个错误 从A a

  • 问题内容: K,所以我有两个表: 我想从类别中获取所有信息,并计算每个类别中的问题数(question_id)。 假设,第一个类别(计费)将有一个问题,第二个类别(安全)将有3个问题。 我已经试过了: 问题答案: 您想这样做: 在将确保没有问题类别获得与数= 0上市

  • 我有两个表hesk\u用户,如下所示。 @实体@表(name=“hesk\u users”)公共类UserHesk{ } @实体@表(name=“user”)公共类用户实现可序列化{ } 我有Hibernate查询,但它不工作... 文件的错误。由于关系,无法获取。