多对多关系
多对多关系需要中间表。
例如:
数据库里通常是:
一、定义模型
关键标签:
表示 Article 和 Tag 通过 article_tags 表关联。
二、迁移
GORM 会尝试创建:
articlestagsarticle_tags
三、创建文章和标签
GORM 会创建文章、标签和中间表关系。
本地练习时这样写比较方便,但真实项目里标签通常要先查是否存在,避免重复创建。
四、给已有文章添加标签
先查文章和标签:
添加关联:
五、删除关联
只删除文章和标签的关系,不删除标签本身:
清空文章所有标签关系:
六、查询文章和标签
遍历标签:
七、按标签查询文章
可以用 Joins:
复杂列表查询直接写清楚 SQL 关系,通常比强行使用关联 API 更容易理解。
八、中间表命名
默认中间表字段通常是:
如果表名和字段名不符合 GORM 默认约定,需要额外配置外键标签。
新项目建议尽量遵循默认约定,减少配置。

