Счет Горм на предварительно загруженном поле - PullRequest
0 голосов
/ 22 мая 2019

Я использую 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 есть возможность добавить счет в эту модель.

Так вот, что я связал,

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 голосов
/ 22 мая 2019

Я построил этот необработанный 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)
...