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)