Golang Go-PG关系递归查询

时间:2019-01-08 00:50:51

标签: go go-pg

我需要加入递归,像这样:

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上实现递归联接,如果有人有经验请告诉我。非常感谢。

1 个答案:

答案 0 :(得分:0)

您需要指出它实际上是第二个结构上的关系:

db.Model(&a).Relation("B").Relation("B.C").First()