ОРМ объектов с уже существующей базой данных. Несколько часов бьюсь, никак FK задать не могу...
Вот есть такие структуры:
type Device struct {
DeviceId string `gorm:"type:uuid;primaryKey" json:"device_id"`
CompanyLicense CompanyLicense `gorm:"foreignKey:api_companylicense" json:"company_license"`
}
func (Device) TableName() string {
return "api_device"
}
type CompanyLicense struct {
CompanyLicenseId string `json:"company_license_id" gorm:"type:uuid; primaryKey"`
}
func (CompanyLicense) TableName() string {
return "api_companylicense"
}
Получаю вот такую ошибку: invalid field found for struct src/models.Device's field CompanyLicense, need to define a foreign key for relations or it need to implement the Valuer/Scanner interface
Вызываемый запрос:
func (d Device) GetDeviceByReportedId(rid string) (*Device, error) {
var device Device
err := DB.Joins("CompanyLicense").Find(&device, "reported_id = ?", rid).Error
return &device, err
}
Пробовал подставлять разные значения, от названия самой структуры в системе до названия колонки из БД, ничего не подходит. Либо ошибка как выше, либо просто тянет модель Device без CompanyLicense 🙁
Надеюсь что кто-то сможет помочь, спасибо!
А нефик горм брать.
Слабо знаком именно с gorm, но откуда ты решил, что Joins возьмет в Select колонки из связей? Посмотри в генерируемый query, их там наверное и нет. У них в доке пишут про некие Associations и в тестах они участвуют https://github.com/go-gorm/gorm/blob/master/tests/associations_has_many_test.go
Обсуждают сегодня