可以使用GORM的Preload函数来进行关联预加载,然后使用Count方法来获取对应A的个数。
假设 model A 的结构体为:
type A struct {
ID uint `gorm:"primary_key"`
BID uint `gorm:"not null"`
B B `gorm:"foreignkey:BID"`
}
model B 的结构体为:
type B struct {
ID uint `gorm:"primary_key"`
Name string `gorm:"not null"`
}
则可以使用以下代码来获取B对象对应的A的个数:
var b B
db.Preload("A").First(&b, 1)
count := db.Model(&b.A).Where("b_id = ?", b.ID).Count(&count)