Укажите ключ для отношения многие ко многим в go-pg ORM
У меня есть эти 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 ответ
Решение
Я использовал версию 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"`
}