гОРМ принадлежит к ассоциации не загружается предварительно

# #go #go-gorm

Вопрос:

Я пытаюсь создать реляционную базу данных с помощью gORM, и у меня проблема с методом «принадлежит«, из-за которой я не могу приступить к работе.

Я ожидаю увидеть бронирование с таблицей, с которой оно связано, но в бронировании просто отображается таблица с нулевыми значениями. и идентификатор таблицы, на который он должен ссылаться, также равен нулю.

Я создал небольшой тест, который создает некоторые данные и выводит результаты в формате json.

 package main  import (  "encoding/json"  "fmt"   "gorm.io/driver/sqlite"  "gorm.io/gorm" )  type User struct {  gorm.Model  Username string  Password string  Bookings []Booking `gorm:"polymorphic:Owner;"` }  type Booking struct {  gorm.Model  TableID *int  Table Table  OwnerID uint  Time int  OwnerType string } type Table struct {  gorm.Model  Number int  Price int }  func DatabaseConnection() *gorm.DB {  db, err := gorm.Open(sqlite.Open("./test.db"), amp;gorm.Config{})  if err != nil {  panic(err)  }   db.AutoMigrate(amp;Booking{})  db.AutoMigrate(amp;Table{})  db.AutoMigrate(amp;User{})   return db }  func main() {  fmt.Println("creating stuff..")  createStuff()   fmt.Println("checking table..")  checkTable()   fmt.Println("checking booking..")  checkBooking()   fmt.Println("checking user..")  checkUser() }  func checkTable() {  db := DatabaseConnection()   var table Table  db.First(amp;table)  u, _ := json.Marshal(amp;table)  fmt.Println(string(u)) }  func checkUser() {  db := DatabaseConnection()   var user User  db.First(amp;user)  db.Preload("Bookings.Table").Preload("Bookings").First(amp;user)  u, _ := json.Marshal(amp;user)  fmt.Println(string(u)) }  func checkBooking() {  db := DatabaseConnection()   var booking Booking  db.Preload("Table").First(amp;booking)  u, _ := json.Marshal(amp;booking)  fmt.Println(string(u)) }  func createStuff() {  db := DatabaseConnection()  tables := []Table{  {Number: 1, Price: 100},  {Number: 2, Price: 100},  {Number: 3, Price: 100},  {Number: 4, Price: 100},  {Number: 5, Price: 100},  {Number: 6, Price: 100},  {Number: 7, Price: 100},  }   user := User{  Username: "martin",  Password: "secret",  }   db.Create(amp;user)  db.Create(amp;tables)   booking := Booking{Time: 1234}   db.Model(amp;tables[0]).Association("Table").Append(  amp;booking,  )   db.Model(amp;user).Association("Bookings").Append(  amp;booking,  ) }  

Я получаю следующие результаты из своего теста:

 checking table.. {  "ID": 1,  "CreatedAt": "2021-12-06T14:56:27.169847346 01:00",  "UpdatedAt": "2021-12-06T14:56:27.169847346 01:00",  "DeletedAt": null,  "Number": 1,  "Price": 100 } checking booking.. {  "ID": 1,  "CreatedAt": "2021-12-06T14:56:27.173323491 01:00",  "UpdatedAt": "2021-12-06T14:56:27.173323491 01:00",  "DeletedAt": null,  "TableID": null,  "Table": {  "ID": 0,  "CreatedAt": "0001-01-01T00:00:00Z",  "UpdatedAt": "0001-01-01T00:00:00Z",  "DeletedAt": null,  "Number": 0,  "Price": 0  },  "OwnerID": 1,  "Time": 1234,  "OwnerType": "users" } checking user.. {  "ID": 1,  "CreatedAt": "2021-12-06T14:56:27.166274122 01:00",  "UpdatedAt": "2021-12-06T14:56:27.17309057 01:00",  "DeletedAt": null,  "Username": "martin",  "Password": "secret",  "Bookings": [  {  "ID": 1,  "CreatedAt": "2021-12-06T14:56:27.173323491 01:00",  "UpdatedAt": "2021-12-06T14:56:27.173323491 01:00",  "DeletedAt": null,  "TableID": null,  "Table": {  "ID": 0,  "CreatedAt": "0001-01-01T00:00:00Z",  "UpdatedAt": "0001-01-01T00:00:00Z",  "DeletedAt": null,  "Number": 0,  "Price": 0  },  "OwnerID": 1,  "Time": 1234,  "OwnerType": "users"  }  ] }