Membuat One to Many GORM di Golang

Last updated

Last updated
type Customer struct {
gorm.Model
GradeID uint32 `json:"gradeid"
}type Grade struct {
gorm.Model
Customer []Customer `gorm:"foreignKey:GradeID"`
}var grades = []models.Grade{
models.Grade{
Name: "Bronze",
Category: "Standard",
},
models.Grade{
Name: "Silver",
Category: "Standard",
},
models.Grade{
Name: "Gold",
Category: "Premium",
},
}
var customers = []models.Customer{
models.Customer{
GradeID: 1,
Name: "Park Bo Gum",
Address: "Nowongu",
City: "Namyangju",
Region: "Korea Selatan",
},
models.Customer{
GradeID: 2,
Name: "Kang Daniel",
Address: "Ansan",
City: "Busan",
Region: "Korea Selatan",
},
}AddForeignKey("grade_id", "grades(id)", "NO ACTION", "NO ACTION")seed.Load(server.DB)
server.DB.Debug().AutoMigrate(&models.Grade{}, &models.Customer{})//Load function
func Load(db *gorm.DB) {
err := db.Debug().DropTableIfExists(&models.User{}, &models.Roles{}, &models.Nav{}, &models.Activity{}, &models.Customer{}, &models.Grade{}, &models.Product{}, &models.Cart{}).Error
if err != nil {
log.Fatalf("cannot drop table: %v", err)
}
err = db.Debug().AutoMigrate(&models.User{}, &models.Roles{}, &models.Nav{}, &models.Activity{}, &models.Customer{}, &models.Grade{}, &models.Product{}, &models.Cart{}).Error
if err != nil {
log.Fatalf("cannot migrate table: %v", err)
}
for g, _ := range grades {
err = db.Debug().Model(&models.Grade{}).Create(&grades[g]).Error
if err != nil {
log.Fatalf("cannot seed grade table: %v", err)
}
}
for h, _ := range customers {
err = db.Debug().Model(&models.Customer{}).Create(&customers[h]).AddForeignKey("grade_id", "grades(id)", "NO ACTION", "NO ACTION").Error
if err != nil {
log.Fatalf("cannot seed customer table: %v", err)
}
}
}