Счет Горм на предварительно загруженном поле
Я использую Postgres с Go Lang и фреймворком Echo в качестве своей базы, при этом я использую 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 ответ
Я построил этот запрос 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)