如何在金珠GORM中创建Left Join

Art*_*tro 7 mysql go go-gorm

我无法在 jinzhu GORM(MySQL 数据库)中创建带有左连接的简单查询

这些是我的结构:

type Prop struct {
    ID          uint   
    Status      Status 
    StatusID    uint
    Name        string 
}

type Status struct {
    ID   uint   
    Name string
}
Run Code Online (Sandbox Code Playgroud)

Prop 有一个 Status 的外键

我想执行的 SQL 查询是:

SELECT * from prop LEFT JOIN status ON prop.status_id = status.id
Run Code Online (Sandbox Code Playgroud)

所以我会从与状态表连接的道具表中检索所有记录

我试过:

db.Find(&prop).Related(&status) 
Run Code Online (Sandbox Code Playgroud)

但没有成功。有人有什么建议吗?提前致谢

RuN*_*ruN 8

嘿@arthur_mastropietro,我认为预加载Prop的相关Status是关键。试试下面的:

prop := Prop{}
if err := db.Model(&prop).Preload("Status").Find(&prop).Error; err != nil {
  fmt.Println(err)
}
fmt.Printf("%+v\n", prop)
Run Code Online (Sandbox Code Playgroud)

笔记

您可以链接其他结构的预加载,即 Preload("Status").Preload("Something")...etc。事实上,您可以链接大多数Gorm函数调用。

此外,如果Status还有另一个结构作为它的字段之一,您可以通过调用同时加载它们 Preload("Status.Something")

希望有帮助!