如何处理与gorp的连接?

时间:2014-05-01 16:48:36

标签: postgresql go gorp

在我的一个爱好项目中,我有一个这样的结构:

type Resource struct {
    Id int
    ParentIds []int
    Title string
    Contents []byte
    Resources []Resource
}

每个资源可能都有一些子资源([]资源)。我想开始使用像gorp这样的查询到结构映射器,但我不知道如何映射查询,如

SELECT r.Id, r.Title, r.Contents
FROM Resources r
LEFT OUTER JOIN Resources sub ON sub.ParentIds @> ARRAY[r.Id]::integer[]

任何人都可以创建一个最小的工作示例或指向相关文档吗?也许gorp不适合这份工作?如果有更好的选择,我也愿意接受建议。谢谢。

1 个答案:

答案 0 :(得分:2)

https://github.com/go-gorp/gorp的gorp自述文件中有一个联接示例。我不认为有任何内置的方法可以像你一样将单独的表放入数组中。

其中InvoicePersonView是用于保存查询结果的结构。

// Run your query
query := "select i.Id InvoiceId, p.Id PersonId, i.Memo, p.FName " +
    "from invoice_test i, person_test p " +
    "where i.PersonId = p.Id"

// pass a slice to Select()
var list []InvoicePersonView
_, err := dbmap.Select(&list, query)

// this should test true
expected := InvoicePersonView{inv1.Id, p1.Id, inv1.Memo, p1.FName}
if reflect.DeepEqual(list[0], expected) {
    fmt.Println("Woot! My join worked!")
}