gorm 一对多

type Author struct {
	AID  int `gorm:"primary_key;AUTO_INCREMENT"`
	Name string
	Age  string
	Sex  string
	//关联关系
	Article []Article `gorm:"ForeignKey:Auid;AssociationForeignKey:AID"`
}
type Article struct {
	ArId    int `gorm:"primary_key;AUTO_INCREMENT"`
	Title   string
	Content string
	Desc    string
	//设置外键
	AuId int
}

创建

	author := Author{
		Name: "张三",
		Age:  30,
		Sex:  "男",
		Article: []Article{{
			Title:   "HTML入门",
			Content: "",
			Desc:    "",
		},
			{
				Title:   "HTML入门",
				Content: "",
				Desc:    "",
			},
		},
	}
	db.Create(&author)

查询一

	//Association方式查询,因为关联关系在Author中,所以我们操作的是Author模型
	var author Author
	//如果只执行下面这步操作,那么关联的Article信息是查询不到的
	db.Debug().First(&author, "info_id=?", 1)
	//如果想要查询到Author相关内容,必须执行如下操作:
	//Model参数:要查询的表数据,Association参数:关联到具体的模型,模型名称Article(字段名字)
	//Find参数:查询的数据要放在什么字段中&author.Article
	db.Debug().Model(&author).Association("Article").Find(&author.Article)

查询二

	//preLoad方式查询
	var author Author
	//查询a_id=1的数据放入author中,并关联查询Article字段对应的数据
	db.Debug().Preload("User").Find(&author, "a_id=?", 1)

更新

var author Author
	//查询a_id=1的数据放入author中,并关联查询Article字段对应的数据
	db.Debug().Preload("User").Find(&author, "a_id=?", 1)
	//再更新
	//如果直接Update操作,那么关联的文章记录就会被全部更改
	//db.Model(&author.Article).Update("title", "go入门")
	//所以你要改动指定的记录,必须加入限定条件
	db.Model(&author.Article).Where("ar_id=?", 1).Update("title", "go入门")

删除

var author Author
	//查询a_id=1的数据放入author中,并关联查询Article字段对应的数据
	db.Debug().Preload("User").Find(&author, "a_id=?", 1)
	//再删除:必须加入指定条件
	db.Where("ar_id=?", 2).Delete(&author.Article)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值