You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go Bun ORM如何自定义belongs-to关联映射的外键字段?

你可以通过在关联字段的bun标签中显式指定外键字段名,覆盖Bun的默认外键映射规则,操作如下:

  1. 修改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会自动使用该字段作为关联外键,不需要额外调整其他逻辑。

  1. 原来的查询代码无需修改即可正常运行:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:57:03