Gorm 计数预加载字段
Gorm Count On Preloaded Field
我正在使用带有 Go Lang 和 Echo 框架的 Postgres 作为我的基础,我正在使用 Gorm 来构建我的数据库查询。
这是我的个人资料模型,
type Profile struct {
gorm.Model
InvoiceCount uint `gorm:"-"`
CompanyName string `gorm:"size:255"`
CompanyNumber string `gorm:"size:10"`
CompanyVatNumber string `gorm:"size:10"`
DateAdded time.Time `gorm:"type:date"`
PrimaryEmail string `gorm:"size:255"`
IsActive bool
Invoice []*Invoice `gorm:"foreignkey:profile_fk" json:",omitempty"`
Address []*Address `gorm:"foreignkey:profile_fk" json:",omitempty"`
}
这已链接到我的发票模型中,我正尝试在预加载时对其进行计数。我添加了 InvoiceCount
uint 可以将计数添加到该模型中。
这就是我绑定的内容,
dbCon().
Preload("Invoice", func(db *gorm.DB) *gorm.DB {
return db.Count(&profile)
}).
Find(&profile).
RecordNotFound()
但是,我除了这个不工作之外,它 returns 出现以下错误:(pq: zero-length delimited identifier at or near """")
。
我正在尝试通过一个简单的查询来执行此操作,但这错了吗?我是否需要循环我所有的配置文件并为每个配置文件添加一个计数?或者下拉到带有子 select?
的原始 SQL 查询
谢谢,
我已经构建了这个原始 SQL 查询,
dbConn().
Raw("SELECT p.*, count(i.id) as invoice_count FROM profiles p left join invoices i on i.profile_fk = p.id group by p.id").
Scan(&result)
我正在使用带有 Go Lang 和 Echo 框架的 Postgres 作为我的基础,我正在使用 Gorm 来构建我的数据库查询。
这是我的个人资料模型,
type Profile struct {
gorm.Model
InvoiceCount uint `gorm:"-"`
CompanyName string `gorm:"size:255"`
CompanyNumber string `gorm:"size:10"`
CompanyVatNumber string `gorm:"size:10"`
DateAdded time.Time `gorm:"type:date"`
PrimaryEmail string `gorm:"size:255"`
IsActive bool
Invoice []*Invoice `gorm:"foreignkey:profile_fk" json:",omitempty"`
Address []*Address `gorm:"foreignkey:profile_fk" json:",omitempty"`
}
这已链接到我的发票模型中,我正尝试在预加载时对其进行计数。我添加了 InvoiceCount
uint 可以将计数添加到该模型中。
这就是我绑定的内容,
dbCon().
Preload("Invoice", func(db *gorm.DB) *gorm.DB {
return db.Count(&profile)
}).
Find(&profile).
RecordNotFound()
但是,我除了这个不工作之外,它 returns 出现以下错误:(pq: zero-length delimited identifier at or near """")
。
我正在尝试通过一个简单的查询来执行此操作,但这错了吗?我是否需要循环我所有的配置文件并为每个配置文件添加一个计数?或者下拉到带有子 select?
的原始 SQL 查询谢谢,
我已经构建了这个原始 SQL 查询,
dbConn().
Raw("SELECT p.*, count(i.id) as invoice_count FROM profiles p left join invoices i on i.profile_fk = p.id group by p.id").
Scan(&result)