在go-pg ORM中指定多对多关系的密钥

时间:2018-06-13 10:32:09

标签: go go-pg

我有这两个具有多对多关系的模型:

type Person struct {
    tableName    struct{}   `sql:"person"`
    UUID         string     `sql:"person_uuid,pk"`
    ContactDatas []ContactData `pg:",many2many:person_contact_data,joinFK:"`
}

type ContactData struct {
    tableName     struct{}   `sql:"contact_data"`
    UUID          string     `sql:"contact_data_uuid,pk"`
}

person_contact_data表的模型是:

type PersonContactData struct {
    tableName       struct{} `sql:"person_contact_data"`
    PersonUUID      string   `sql:"person_uuid"`
    ContactDataUUID string   `sql:"contact_data_uuid"`
}

如果joinFK结构标记中的ContactDatas为空,则go-pg会在引擎下添加下划线,因此生成的SQL部分如下所示:WHERE ("contact_data"."contact_data_uuid" = person_contact_data."_contact_data_uuid")

有没有办法完全手动指定加入键?

1 个答案:

答案 0 :(得分:0)

我使用的是版本5.在最新版本中,这已修复,现在您可以指定完整的加入密钥:

type Person struct {
    tableName    struct{}   `sql:"person"`
    UUID         string     `sql:"person_uuid,pk"`
    ContactDatas []ContactData `pg:",many2many:person_contact_data,fk:person_uuid,joinFK:contact_data_uuid"`
}