package gorm_models import ( "log" "time" "github.com/gosimple/slug" "gorm.io/gorm" ) type Brand struct { ID uint `gorm:"primary_key"` CreatedAt time.Time UpdatedAt time.Time Name string `gorm:"default:TESTBRAND"` Code string Status bool Categories []Category `gorm:"many2many:category_brands;"` } func FindOrCreateBrand(db *gorm.DB, brand string, categories []Category) (Brand, error) { var brandObject Brand if brand != "" { code := slug.Make(brand) err := db.FirstOrCreate(&brandObject, Brand{Name: brand, Code: code}).Error //err := db.Model(Brand{Name: brand, Code: code}).First(&brandObject).Error //log.Println(Brand{Name: brand, Code: code}) if err != nil { //err := db.Omit("Categories.*").FirstOrCreate(&brandObject, Brand{Name: brand, Code: code, Categories: categories}).Error log.Println("ERR0000000000000001" + err.Error()) return brandObject, err } db.Model(&brandObject).Association("Categories").Append(categories) return brandObject, nil } // var brandObject Brand return brandObject, nil }