0

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

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"`
}

如果joinFKin ContactDatasstruct tag 为空 go-pg 在底层添加下划线,则生成的 SQL 部分如下所示WHERE ("contact_data"."contact_data_uuid" = person_contact_data."_contact_data_uuid")

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

4

1 回答 1

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"`
}
于 2018-06-13T14:28:12.003 回答