最近在学习golang, 使用gin框架搭了个网站,于是在网上找golang的orm
找到gorm使用了两天突然发现v2已经发布了,看更新日志说提高了性能修复了很多bug,于是赶紧换了v2,以下纪录我使用gorm v2 踩过的坑
1 模型关系
我使用gorm连接的是mysql, 在使用automigrate根据关系模型创建表的时候总是创建失败
首先看官方文档,简单的关联关系,其实理解了官方案例问题就不大.
但是在复杂关系的时候创建就会报错(无法添加外键约束等).这里我提供我自己实验出的一种解决方式:
以我自己的项目为例,假设有User(用户),House(房间),Order(订单)三个表, 无关的属性已经去掉
type User struct {
gorm.Model // gorm自带, 会提供ID, craeteAt, updateAt, deleteAt四个属性
Property1 int
Property2 string
Houses []*House `gorm:"many2many:user_houses"` // 用户与房间多对多的关系
Orders []Order // 用户与订单一对多的关系
}
type House struct {
gorm.Model
Property1 int
Property2 string
Tenants []*User `gorm:"many2many:user_houses;constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"`
}
type Order struct {
gorm.Model
Property1 int
Property2 string
U