У меня есть 2 простых объекта, у пользователя много активов:
type User struct {
UserId int `gorm:"PRIMARY_KEY"`
Email string `gorm:"column:email"`
FirstName string `gorm:"column:firstname"`
LastName string `gorm:"column:lastname"`
Assets []Asset `gorm:"foreignkey:user_id"`
}
type Asset struct {
AssetId int `gorm:"PRIMARY_KEY"`
UserId int `gorm:"column:user_id"`
Slug string `gorm:"column:slug"`
Address string `gorm:"address"`
}
Я хочу получить пользователя по первичному идентификатору, а также собрать активы.
Следуя документации здесь:http://doc.gorm.io/associations.html#has-many Я сделал следующее, что дает мне пустой массив, хотя есть записи:
var user app.User
var assets []app.Asset
err := r.DB.Where("user_id = ?", userId).First(&user).Error
if err != nil {
return nil, err
}
r.DB.Model(&user).Related(&assets)
Изменение с:
r.DB.Model(&user).Related(&assets)
на:
r.DB.Model(&user).Related(&user.Assets)
Я получаю один Актив, потому что GORM по какой-то причине извлекается по asset_id, а не user_id.(поэтому, если user_id равен 10, он получает актив с asset_id -> 10)
Как правильно обрабатывать отношения в этом случае?