has many établit une connexion un-à-plusieurs avec un autre modèle. Contrairement à un modèle unique, le propriétaire peut avoir zéro ou plusieurs modèles associés.
Par exemple, votre application contient des modèles d'utilisateur et de carte de crédit, et chaque utilisateur peut posséder plusieurs cartes de crédit.
- Définir le modèle
// User 有多张 CreditCard,UserID 是外键
type User struct {
gorm.Model
Name string
CreditCard []CreditCard `gorm:"foreignKey:UserID"` // 使用 UserName 作为外键
}
type CreditCard struct {
gorm.Model
Number string
UserID uint //存储user表的主键id
}
- Créer des tableaux et insérer des données
package mysqltest
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
var db *gorm.DB
func Initdb() {
dsn := "ellis:ellis@tcp(192.168.214.134:3306)/go_db?charset=utf8mb4&parseTime=True&loc=Local"
var err error
db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
})
if err != nil {
panic(err)
}
}
func Create(value interface{
}) {
d := db.Create(value)
fmt.Printf("d.RowsAffected: %v\n", d.RowsAffected)
}
func InitTable() {
db.AutoMigrate(&User{
}, &CreditCard{
})
}
package main
import (
"ellis/mysqltest"
)
func main() {
mysqltest.Initdb()
// // 创建数据库
mysqltest.InitTable()
var value []mysqltest.CreditCard = []mysqltest.CreditCard{
{
Number: "123"}, {
Number: "234"}}
mysqltest.Create(&mysqltest.User{
Name: "ellis", CreditCard: value})
}