gorm 一对多

news2024/12/24 21:16:42
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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1842293.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL Server和Server启动程序(二)

mysql.server — MySQL Server启动脚本 Unix和类Unix系统上的MySQL发行版包括一个名为MySQL.server的脚本,该脚本使用mysqld_safe启动MySQL服务器。它可以在Linux和Solaris等系统上使用,这些系统使用System V风格的运行目录来启动和停止系统服务。它也被…

基础算法---滑动窗口

文章目录 什么是滑动窗口1.长度最小的子数组2.无重复字符的最长子串3.最大连续1的个数4.将x减到0的最小操作数5.最小覆盖子串总结 什么是滑动窗口 滑动窗口(Sliding Window)是一种在计算机科学中用于解决各种子数组或子字符串问题的技术。滑动窗口技术通…

如何建立私域流量?私域流量怎么运营,一文读懂

当全网都在讨论私域流量,你是不是也有很多问号呢? 互联网高速发达,消费形式日新月异,跟不上时代就会被时代淘汰,接下来,我们就从3个层面深度讨论下私域流量究竟是什么?为什么要玩转私域流量&am…

详细解析Ubuntu22 部署Kaldi大模型

一、下载Kaldi模型 下载地址:GitHub - kaldi-asr/kaldi: kaldi-asr/kaldi is the official location of the Kaldi project. 下载文件解释: 一般常用的是src、tools和egs包 src(源代码)包: 包含Kaldi的核心源代码&…

Flutter调用本地web

前言: 在目前Flutter 环境中,使用在线 webview 是一种很常见的行为 而在 app 环境中,离线使用则更有必要 1.环境准备 将依赖导入 2.引入前端代码 前端代码有两种情况 一种是使用打包工具 build 而来的前端代码 另一种情况是直接使用 HTML 文件 …

Quantlab整合Alpha158因子集,为机器学习大类资产配置策略做准备(代码+数据)

原创文章第565篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 我们的研报得现工作,用了两篇文章讲数据准备: 【研报复现】年化16.19%,人工智能多因子大类资产配置策略 【研报复现】年化27.1%,人…

vmware workstation下centos7屏幕切换及大小调整

虚拟机版本:vmware workstation15.5.2 操作系统版本:centos 7.9.2009 一 图形界面和命令行界面切换方法 在CentOS 7中,可以使用以下方法切换界面: 1 使用快捷键切换:按下Ctrl Alt F2(或F3&#xff0…

0.5 逐行扫描(Progressive scan)简介

0.5 逐行扫描简介 逐行扫描(Progressive scan)是一种将图像显示在扫描式的显示设备上的方法。 逐行扫描常被用在计算机显示器上。 逐行扫描按照从左到右,从上到下的顺序扫描图像的所有行。如下图: 下图粗略的将逐行扫描与隔行…

LORA、UNB无线网关物联网锁助力人才公寓智慧化管理

吸引和留住青年人才是城市持续发展的关键,解决青年人才住房问题又是其中重要一环。“人才跟着产业走、公寓跟着人才建”已成为全国各地新建及改造人才公寓的目标,“引才聚才”离不开人才公寓行业布局与发展。 人才公寓不同于普通的长短租公寓&#xff0c…

[HGAME 2022 week1]Matryoshka(古典密码混合)

题目: 直接说方法: 首先这是一段盲文,要先将盲文反转, 然后再用摩斯密码转换 将得到的字符串去掉“,”后,base16解码 在尝试维吉尼亚密码 再用base64解码 然后用凯撒密码 最后栅栏密码(22栏)

专家观点∣企企通采购供应链数字化总监于海生:如何利用数字化技术重构采购流程,推动企业降本增效?

摘要 数字化转型现已成为企业提升竞争力、实现降本增效的必由之路。企业应主动参与到数字经济的建设中,以数据资源为关键要素,以现代信息网络为主要载体,以信息通信技术的有效使用作为效率提升和经济结构优化的重要推动力的一系列经济活动&a…

基于STC12C5A60S2系列1T 8051单片机接收串口调试助手发送的固定长度字符串控制单片机的功能

基于STC12C5A60S2系列1T 8051单片机接收串口调试助手发送的固定长度字符串控制单片机的功能 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机串口通信介绍STC12C5A60S2系列1T 8051单片机串口通信的结构基于STC12C5A60S2系列1T 8051单片机串口通信的特殊功能…

广州化工厂可燃气体报警器检定检验:安全生产新举措显成效

随着科技的不断发展,可燃气体报警器的检定检验技术也在不断进步。 广州的一些化工厂开始采用先进的智能检测系统和数据分析技术,对报警器的性能进行更加精准和全面的评估。 这些新技术不仅能够提高检定检验的效率和准确性,还能够为化工厂的…

第11章 测试代码

第11章 测试代码 11.1 测试函数11.1.1 单元测试和测试用例11.1.2 可通过的测试11.1.3 未通过的测试11.1.4 测试未通过时怎么办11.1.5 添加新测试 11.2 测试类11.2.1 各种断言方法11.2.2 一个要测试的类11.2.3 测试 AnonymousSurvey 类11.2.4 11.1 测试函数 11.1.1 单元测试和测…

Rancher注册已有k8s集群

Rancher安装后注册K8s集群操作 1.Rancher安装 编辑docker—compose文件 version: 3.8services:rancher:image: registry.cn-hangzhou.aliyuncs.com/rancher-images/rancher:v2.8.5container_name: rancherprivileged: truerestart: unless-stoppedports:- "18080:80&qu…

2004年上半年软件设计师【下午题】试题及答案

文章目录 2004年上半年软件设计师下午题--试题2004年上半年软件设计师下午题--答案2004年上半年软件设计师下午题–试题

Ant Design Vue中的Table和Tag的基础应用

目录 一、Table表格 1.1、显示表格 1.2、列内容过长省略展示 1.3、完整分页 1.4、表头列颜色设置 二、Tag标签 2.1、根据条件显示不同颜色 2.2、控制关闭事件 一、Table表格 效果展示&#xff1a; 官网&#xff1a;Ant Design Vue 1.1、显示表格 <a-tableref&quo…

Simufact Additive仿真助力金属粘结剂喷射成型(MBJ)工业化

引 言 烧结过程中“设计”补偿变形的能力被视为是实现金属粘结剂喷射成型&#xff08;MBJ&#xff09;快速商业化的关键。针对烧结过程的仿真分析&#xff0c;Simufact Additive软件现已推出了MBJ仿真模块第三个版本&#xff0c;当前版本能够准确模拟烧结过程&#xff0c;预测…

微信多开器

由于微信的限制&#xff0c;我们平时只能登录一个微信&#xff0c;要登录多个微信一般需要多台手机&#xff0c;很显然这种方法很费手机&#xff01;&#xff01;一个微信多开神器可以给你省下好几台手机钱&#xff0c;抓紧拉下来放手机里落灰http://www.xbydon.online/?p132 …

Windows清理C盘的4类方法【新手小白专用】

一、系统清理法 1.磁盘清理 【Win R】启动命令提示符&#xff0c;输入【cleanmgr】,选择打开C盘&#xff0c;勾选要清理的文件 一般大的文件是【临时文件和下载的程序文件】 2.存储清理&#xff08;1&#xff09; 打开【设置】-【系统】-【存储】-【配置存储感知或立即运行…