预装场上的部队计数

时间:2019-05-22 19:02:47

标签: go go-gorm go-echo

我以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模型中,我正在尝试对预载进行计数。我添加了InvoiceCount uint,可以将计数添加到该模型中。

这就是我所束缚的,

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查询?

谢谢

1 个答案:

答案 0 :(得分: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)