最新go pg中的列
我正在从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
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()
文档中的表关系映射有更多选择选项: