Укажите ключ для отношения многие ко многим в go-pg ORM - PullRequest
0 голосов
/ 13 июня 2018

У меня есть эти 2 модели с отношением «многие ко многим»:

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 тег struct пуст. go-pg добавляет подчеркивание под капот, поэтому сгенерированная часть SQL выглядит следующим образом: WHERE ("contact_data"."contact_data_uuid" = person_contact_data."_contact_data_uuid").

Есть ли способ указать ключи соединения полностью вручную?

1 Ответ

0 голосов
/ 13 июня 2018

Я использовал версию 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"`
}
...