Go Bun ORM如何自定义belongs-to关联映射的外键字段?
你可以通过在关联字段的bun标签中显式指定外键字段名,覆盖Bun的默认外键映射规则,操作如下:
- 修改Order结构体中ContactPartner字段的tag,添加
fk参数指定关联的外键字段为ContactPartnerID:
type Order struct { bun.BaseModel `bun:"select:sb_order"` ID int64 `bun:"id"` GenOid string `bun:"gen_oid"` // 新增fk参数,指定外键对应结构体的ContactPartnerID字段 ContactPartner *ResPartner `bun:"rel:belongs-to,fk:ContactPartnerID"` ContactPartnerID int64 `bun:"contact_partner"` }
你已经将ContactPartnerID字段的列映射为contact_partner,Bun会自动使用该字段作为关联外键,不需要额外调整其他逻辑。
- 原来的查询代码无需修改即可正常运行:
err = db.NewSelect().Model(&order). Relation("ContactPartner"). Scan(ctx)
如果不想修改结构体标签,也可以在查询时临时指定关联条件:
err = db.NewSelect().Model(&order). Relation("ContactPartner", func(q *bun.SelectQuery) *bun.SelectQuery { return q.Where(`"sb_order".contact_partner = "sb_partner".id`) }). Scan(ctx)
内容的提问来源于stack exchange,提问作者Milon Mahato
相关产品推荐
相关产品推荐

