一对多和 Preload
关联关系用来描述表与表之间的关系。
这一节讲最常见的一对多:
一、定义模型
关键字段:
GORM 会把 Article.UserID 当作外键,关联 User.ID。
User.Articles 表示一个用户有多篇文章。
二、迁移
建议先迁移 User,再迁移 Article。
三、创建关联数据
先创建用户:
再创建文章:
建议先明确写 UserID,这样最容易理解数据库关系。
四、查询文章和作者
只查询文章:
此时 article.User 不会自动查出来。
使用 Preload 预加载作者:
这样可以拿到:
五、查询用户和文章列表
然后:
六、Preload 会发生什么
Preload("Articles") 不是把所有数据用一条 SQL 查出来。
它通常会执行多条 SQL:
优点是使用简单。
缺点是关联多、数据多时要注意查询数量和性能。
七、带条件的 Preload
只加载已发布文章:
按时间排序:
八、使用 Joins 查询
只查文章列表和作者名时,可以用 Joins 扫描到自定义结构:
列表接口不一定要把完整关联对象都查出来,按实际返回字段设计即可。

