在 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"`
}
我有这两个具有多对多关系的模型:
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"`
}