1

我使用带有 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"`
} 

这与我的 Invoice 模型相关联,我试图在预加载时对其进行计数。我添加了InvoiceCountuint 可以将计数添加到此模型中。

所以这就是我绑定的,

dbCon().
  Preload("Invoice", func(db *gorm.DB) *gorm.DB {   
    return db.Count(&profile)
  }).
  Find(&profile).
  RecordNotFound()

但是,除了这个不起作用之外,它还返回以下错误:(pq: zero-length delimited identifier at or near """").

我试图用一个简单的查询来做到这一点,但这有错吗?我是否需要遍历我的所有个人资料并为每个个人资料添加计数?或者通过子选择下拉到原始 SQL 查询?

谢谢,

4

1 回答 1

0

我已经构建了这个 Raw 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)
于 2019-05-22T20:30:08.857 回答