gorm 创建失败_带你踩gorm v2的坑-(创建关系模型)

最近在学习golang, 使用gin框架搭了个网站,于是在网上找golang的orm找到gorm使用了两天突然发现v2已经发布了,看更新日志说提高了性能修复了很多bug,于是赶紧换了v2,以下纪录我使用gorm v2 踩过的坑1 模型关系我使用gorm连接的是mysql, 在使用automigrate根据关系模型创建表的时候总是创建失败首先看官方文档,简单的关联关系,其实理解了官方案例问题就不大....
摘要由CSDN通过智能技术生成

最近在学习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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值