我的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,所以如果我不需要发出两个请求来获取Customer然后是Address,这将是非常实用的。
我在这里搜索,但找不到一个一对一关系的例子,有没有一种方法可以让这个查询不仅得到客户数据,而且还得到地址?
func (u customer) GetCustomers(params string) ([]models.Customer, error) {
customers := []models.Customer{}
u.db.Preload("Addresses").Find(&customers)
return customers, nil
}
2条答案
按热度按时间wkftcu5l1#
当您使用
Preload
函数时,您向它传递要为其加载数据的字段的名称。在你的例子中,它应该看起来像这样(因为你在
Customer
结构体中的字段名为Address
):您可以查看文档以了解更多详细信息。
qjp7pelc2#
我有这些
two entities
,UserAccount
带有一个ID字段作为主键,UserLoginData
带有一个userId
外键。我想要query UserLoginData by email
并检索UserAccount
的所有值以及相应的userId
。我已经做了如下所示。虽然我可以从UserAccount
中获取字段,但不能访问一些信息,如UserAccount
的firstName
和userName