GORM 第一次带条件查询

Akh*_*nif 2 orm go go-gorm

我想询问有关 GORM db.First()with Condition 的问题

好的,这是一个例子

if err := repository.db.First(&admin, id).Error; err != nil {
    return nil, &response.Error{
        Code: 500,
        Err:  err,
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道这是可能的,因为 GORM 文档说明here

但是,这个怎么样?

if err := repository.db.First(&admin, email).Error; err != nil {
    return nil, &response.Error{
        Code: 500,
        Err:  err,
    }
}
Run Code Online (Sandbox Code Playgroud)

那和这个一样吗? err := repository.db.Where("email = ?", email).First(&admin).Error

提前致谢

我试图彻底阅读 GORM 文档,但我找不到任何关于我的方法可能完成的声明。所以,我在这里提问,希望得到一些启发

PRA*_* PC 6

First方法用于获取第一条符合条件的记录,id默认会与主键字段( )进行检查。

repository.db.First(&admin, id)
Run Code Online (Sandbox Code Playgroud)

在这里,它将生成一个查询:SELECT * FROM admin WHERE id = :id


repository.db.First(&admin, "an-email@gmail.com")
Run Code Online (Sandbox Code Playgroud)

这与这里不同,repository.db.Where("email = ?", email).First(&admin) 它也会检查字段的条件id

SELECT * FROM admin WHERE id = an-email@gmail.com- 会引发错误

相反,你可以尝试这个或与你相同的where

db.First(&admin, "email = ?", "an-email@gmail.com")
Run Code Online (Sandbox Code Playgroud)

因为这将检查字段的条件email

您可以启用调试模式,它会显示查询

db = db.Debug()
Run Code Online (Sandbox Code Playgroud)

也可以看看

希望这可以帮助