我需要递归加入,像这样:
SELECT a.*, b.* c.* FROM a
LEFT JOIN b on b.id = a.b_id
LEFT JOIN c ON c.id = b.c_id
我的模型定义是:
type A struct {
ID int,
NameA string,
B_id int
B *B,
C *C,
}
type B struct {
ID int,
C_id int,
NameB string,
C C,
}
type C struct {
ID int,
NameC string,
}
我尝试使用关系但没有用:
a := A{}
//does not work
db.Model(&a).Relation("B").Relation("C").First()
//works
db.Model(&a).Relation("B").First()
我如何在 go-pg 上实现递归连接,如果有人有这方面的经验,请告诉我。非常感谢。
最佳答案
您需要指出它实际上是第二个结构上的关系:
db.Model(&a).Relation("B").Relation("B.C").First()
关于Golang go-pg关系递归查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54083904/