最新go pg中的列

最新go pg中的列,go,go-pg,Go,Go Pg,我正在从go pg从8.0.5更新到10.3.2,并且我的ORM列有问题 结构: type Item struct { ID int `pg:"id,pk"` Name string `pg:"name"` Desc string `pg:"description"` SubItems []SubItem `pg:"rel:has-many"` } type SubIte

我正在从go pg从
8.0.5
更新到
10.3.2
,并且我的ORM列有问题

结构:

type Item struct {
    ID   int    `pg:"id,pk"`
    Name string `pg:"name"`
    Desc string `pg:"description"`

    SubItems []SubItem `pg:"rel:has-many"`
}

type SubItem struct {
    ID     int    `pg:"id,pk"`
    ItemID int    `pg:"item_id"`
    Name   string `pg:"name"`

    Item Item `pg:"rel:has-one"`
}
这是单元测试失败的部分

list := []test.Item{{ID: 1, Name: "first"}, {ID: 2, Name: "second"}, {ID: 3, Name: "third"}}
subItems := []test.SubItem{{ID: 1, ItemID: 1}, {ID: 2, ItemID: 3}}

_, err := dbConn.model(list).Insert()
So(err, ShouldBeNil)
_, err = dbConn.model(subItems).Insert()
So(err, ShouldBeNil)

expected := test.SubItem{
    ID:     2,
    ItemID: 3,
    Item:   test.Item{ID: 3, Name: "third"},
}

var actual test.SubItem

err = dbConn.Model(&actual).Column("item").Where("sub_item.id = 2").Select()
So(err, ShouldBeNil)
So(actual, ShouldResemble, expected)
我遇到的问题是,在v8中,这个选中的
项带有连接。在v10中,它抛出了一个“列“item”不存在”错误。
正确的方法是什么?

在v9检查中更改:

Query.Column不再接受关系名称。改为使用Query.Relation,如果关系不存在,它将返回错误

尝试使用关系即可获得所有项目列

err = dbConn.Model(&actual).
    Column("_").
    Relation("Item").
    Where("sub_item.id = 2").
    Select()
文档中的表关系映射有更多选择选项: