Я новичок в Го Горм ассоциации.У меня есть такой код:
package main
import (
_ "database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/jinzhu/gorm"
)
type User struct {
ID uint `gorm:"primary_key"`
Name string
}
type Event struct {
ID uint `gorm:"primary_key"`
EventName string
Users []User `gorm:"many2many:event_reviews;"`
}
type EventReview struct {
UserID uint
EventID uint
Rating float64
Review string
}
func main() {
db, _ := gorm.Open("mysql", "root:@tcp(127.0.0.1:3306)/test1?charset=utf8&parseTime=True")
defer db.Close()
db.DropTableIfExists(&EventReview{}, &Event{}, &User{})
db.AutoMigrate(&User{}, &Event{}, &EventReview{})
//All foreign keys need to define here
db.Model(EventReview{}).AddForeignKey("user_id", "users(id)", "CASCADE", "CASCADE")
db.Model(EventReview{}).AddForeignKey("event_id", "events(id)", "CASCADE", "CASCADE")
user := User{Name: "John"}
db.Create(&user)
event := Event{EventName: "Learning Go"}
db.Create(&event)
eventReview := EventReview{UserID: user.ID, EventID: event.ID, Rating: 2.5, Review: "ExcelentEvent"}
db.Create(&eventReview)
//Fetching
eventFetch := &Event{}
db.Preload("Users").First(&eventFetch)
fmt.Println(eventFetch)
}
У меня есть структура User, Event, Event Review.Событие имеет отношение многих ко многим с пользователем.Я прочитал Gorm Docs Associaton Gorm Associaton многие ко многим , но я путаю, чтобы получить данные из обзора событий.
Результат Println:
&{1 Learning Go [{1 John}]}
Ожидаемый результат:
&{1 Learning Go [{1 John 2.5 ExcelentEvent}]}
Как получить результат как ожидаемый результат?Я ошибаюсь, используя таблицу отношений «многие ко многим»?