郑州企业网站推广外包,wordpress手机上传图片失败,观影楼网站,如何做一个网站的功能吗一对多的添加有两种情况#xff1a;
一种是添加用户的时候同时创建文章其次是创建文章关联已经存在的用户 添加用户的时候同时创建文章 package mainimport (gorm.io/driver/mysqlgorm.io/gorm
)// User 用户表 一个用户拥有多篇文章
type User stru…
一对多的添加有两种情况
一种是添加用户的时候同时创建文章其次是创建文章关联已经存在的用户 添加用户的时候同时创建文章 package mainimport (gorm.io/driver/mysqlgorm.io/gorm
)// User 用户表 一个用户拥有多篇文章
type User struct {ID int64Name string gorm:size:6Articles []Article //用户拥有的文章列表 has many
}type Article struct {ID int64 gorm:size:4Title string gorm:size:16UserID int64 //属于 belongs toUser User //属于 belongs to
}func (*User) TableName() string {return user
}func (*Article) TableName() string {return article
}func main() {dsn : root:7PXjAkY!nlRtcp(192.168.11.128:3306)/test?charsetutf8mb4parseTimeTruelocLocaldb, _ : gorm.Open(mysql.Open(dsn), gorm.Config{})db.Debug().AutoMigrate(User{}, Article{})var u Usera1 : Article{Title: redis,}u User{Name: yanzi,Articles: []Article{{Title: golang,},{Title: k8s,},a1,},}db.Debug().Create(u)
}[8.981ms] [rows:3] INSERT INTO article (title,user_id) VALUES (golang,2),(k8s,2),(redis,2) ON DUPLICATE KEY UPDATE user_idVALUES(user
_id)
[14.812ms] [rows:1] INSERT INTO user (name) VALUES (yanzi) 创建文章关联已经存在的用户 最后一种就是关联已有用户 var articles []Articlearticles []Article{{Title: cherry,UserID: 2,},{Title: marry,UserID: 2,},}db.Debug().Create(articles)[11.754ms] [rows:2] INSERT INTO article (title,user_id) VALUES (cherry,2),(marry,2) 创建用户文章并且关联 db.Debug().Create(Article{Title: c,User: User{Name: yanzi,},}) var u Userdb.Debug().Take(u, 2)db.Create(Article{Title: php,User: u,}) model是声明映射关系的对象类型通过这个对象类型找到表名和字段。 Association 是关联某个一对多的字段 find是查找一对多关系 append是更新或者新增一对多关系 Association 关联的是字段为字符串。后面的find和append是具体的结构体指针变量
db.Model(user).Association(CreditCard).Find(user.CreditCard)db.Debug().Model(u).Association(Articles).Append(a) 外键添加 现有文章关联已有用户 var u Userdb.Debug().Take(u, 3)var a Articledb.Debug().Take(a, 7)u.Articles []Article{a}db.Debug().Save(u)[1.300ms] [rows:1] SELECT * FROM user WHERE user.id 3 LIMIT 1[1.629ms] [rows:1] SELECT * FROM article WHERE article.id 7 LIMIT 1[2.901ms] [rows:2] INSERT INTO article (title,user_id,id) VALUES (marry,3,7) ON DUPLICATE KEY UPDATE user_idVALUES(user_id)[6.363ms] [rows:0] UPDATE user SET nametest WHERE id 3[0.557ms] [rows:0] INSERT INTO article (title,user_id,id) VALUES (marry,3,7) ON DUPLICATE KEY UPDATE user_idVALUES(user_id)[3.713ms] [rows:0] INSERT INTO user (name,id) VALUES (test,3) ON DUPLICATE KEY UPDATE nameVALUES(name)mysql select * from user;
-----------
| id | name |
-----------
| 1 | lucas |
| 2 | yanzi |
| 3 | test |
-----------
mysql select * from article;
---------------------
| id | title | user_id |
---------------------
| 1 | golang | 1 |
| 2 | k8s | 1 |
| 3 | golang | 2 |
| 4 | k8s | 2 |
| 5 | redis | 2 |
| 6 | cherry | 2 |
| 7 | marry | 3 |
--------------------- var u Userdb.Debug().Take(u, 3)var a Articledb.Debug().Take(a, 6)db.Debug().Model(u).Association(Articles).Append(a)[2.196ms] [rows:2] INSERT INTO article (title,user_id,id) VALUES (cherry,3,6) ON DUPLICATE KEY UPDATE user_idVALUES(user_id)
model是声明映射关系的对象类型通过这个对象类型找到表名和字段。 var u Userdb.Debug().Take(u, 3)var a Articledb.Debug().Take(a, 5)db.Debug().Model(u).Association(Articles).Append(a)[1.409ms] [rows:1] SELECT * FROM user WHERE user.id 3 LIMIT 1
[1.254ms] [rows:1] SELECT * FROM article WHERE article.id 5 LIMIT 1
[2.285ms] [rows:2] INSERT INTO article (title,user_id,id) VALUES (redis,3,5) ON DUPLICATE KEY UPDATE user_idVALUES(user_id)外键添加 现有用户关联文章