Я новичок в Golang из Питона, поэтому пытаюсь понять новые и разные концепции.
Я пытаюсь создать связанные поля и затем выбрать их из базы данных.
Модель:
type Company struct {
gorm.Model
Name string
}
type CreditCard struct {
gorm.Model
Number int
Company Company
CompanyId uint
}
type User struct {
gorm.Model
Name string
CreditCard CreditCard
CreditCardID uint
}
Создание таблиц и строк и выбор из db
common.DB.AutoMigrate(
&Company{},
&CreditCard{},
&User{},
)
user := User{
Name: "Alice",
CreditCard: CreditCard{Number: 123456, Company: Company{Name: "Bank A"}},
}
common.DB.Create(&user)
var retrivedUser User
var creditCard CreditCard
var company Company
common.DB.First(&retrivedUser, 1).Related(&creditCard).Related(&company)
fmt.Println("user name", retrivedUser.Name)
fmt.Println("creditcard number", retrivedUser.CreditCard.Number)
fmt.Println("creditcard number related", creditCard.Number)
fmt.Println("company name", retrivedUser.CreditCard.Company.Name)
fmt.Println("company name related", company.Name)
Это печатает:
user name Alice
creditcard number 0
creditcard number related 123456
company name
company name related
Два вопроса:
- Почему мне нужно выбрать
Related
creditCard для отдельной переменной вместо использования точечной нотации?
- Я получаю ошибку
invalid association []
в компании Related
, и ни точечная запись, ни связанная работа. Как мне вернуть это обратно?