You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于GORM db.First()带条件查询的等价性疑问

GORM中First(&admin, email)与Where("email = ?", email).First(&admin)的等价性说明

这两种写法不等价,具体差异如下:

  • repository.db.First(&admin, email):GORM会默认将传入的单个参数当作主键值构建查询SQL。假设你的表主键是id,实际生成的SQL是SELECT * FROM admins WHERE id = ? LIMIT 1,完全不是按邮箱匹配的逻辑。
  • repository.db.Where("email = ?", email).First(&admin):这种写法会明确指定查询条件为email字段匹配传入值,生成的SQL是SELECT * FROM admins WHERE email = ? LIMIT 1,符合按邮箱查询的需求。

如果想使用First的简化写法实现按邮箱查询,需要显式指定字段名,写法为:

repository.db.First(&admin, "email = ?", email)

这种写法才和Where(...).First(...)的逻辑完全等价。

内容的提问来源于stack exchange,提问作者Akhmad Dani Munif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 06:09:55