在 go-pg ORM 中为多对多关系指定键

Specify key for many-to-many relationship in go-pg ORM

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

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 table 的模型是:

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

如果 ContactDatas struct 标签中的 joinFK 为空,go-pg 在后台添加下划线,因此生成的 SQL 部分如下所示:WHERE ("contact_data"."contact_data_uuid" = person_contact_data."_contact_data_uuid")

有没有办法完全手动指定连接键?

我使用的是版本 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"`
}