ByteNoteByteNote
注释里的编号不是查询条件
字

字节笔记本

2026年10月7日 · 约 2 分钟读完

注释里的编号不是查询条件

API中转
¥120

模型有用户、文章、档案和标签。用户下面挂文章切片和一份档案。文章用 UserID 做外键,标签是多对多,中间表写成 article_tags。档案也有 UserID。

创建时的注释假设编号从一开始

创建用户并带上档案,名字示例是张三,简介是这是个人简介。注释写成两条插入,第二条的 user_id 是 1。再一个例子同时插入两篇文章,标题是文章1和文章2,注释里的 user_id 也是 1。多对多再插入标签 Go 和数据库,以及中间表的两行。这些编号是注释作者假定的自增值,不是代码里写死的条件。库里已经有数据时,新的编号不会是 1。

First 没有写编号却注释成等于一

预加载档案或文章之后调用 First。注释写成 SELECT 并且 WHERE id = 1。这段 First 没有给主键赋值,也没有 Where。它取的是按主键排序的第一条,不是指定编号为 1 的那一行。注释里的等号是加进去的。

关联上的 Delete 注释是把该文章的 user_id 更新成空,条件是文章编号。Clear 注释是按用户编号把相关文章的外键清空。Append 注释是再插入一篇标题为新文章的记录。Replace 档案的注释是按 user_id 更新简介。Count 注释是按 user_id 计数。这些都挂在 Model 加 Association 上。

Joins 加标题模糊条件的注释是内连接,条件里有百分号和 Go。预加载带同样的模糊条件时,注释把用户编号列成 1、2、3。那三个数字是举例,不是这次 Find 算出来的集合。

First 的注释多写了编号等于一

中间表名来自标签上的 many2many。改表名要改这个标签,注释里的插入也要跟着改。只改注释,语句不会变。

一对一、一对多、多对多在这段里各有创建示例。查询示例主要是预加载和关联模式。没有单独的迁移代码。表还不存在时,这些调用不会按注释里的插入成功。

中间表名写在多对多标签上

模糊条件用的是占位符,注释里却把百分号和 Go 拼进了 SQL 文本。以代码里的问号为准。注释只说明意图。

同一段里 user 变量创建了不止一次。这是多则示例叠在一个文件里,不是一段能直接编译的程序。

删除关联的注释是更新外键为空,不是删除文章行。要删掉文章本身,这段没有给出那条删除。

相关文章

分享: