Gorm Scopes 用法

14 min read

Gorm Scopes 是 Gorm 框架提供的一种查询方式,可以用于在查询时定义预设的查询条件,方便复用,节省代码量。

使用 Gorm Scopes 的基本步骤如下:

  1. 在 Model 中定义 Scope 方法,方法的参数是一个 *gorm.DB 对象,返回值也是 *gorm.DB 对象,该方法表示为查询对象添加预设条件。

  2. 在查询时调用定义好的 Scope 方法,可以使用链式调用的方式添加多个 Scope,最终执行查询操作。

下面是一个简单的示例:

type User struct {
    gorm.Model
    Name  string
    Email string
}

func (u *User) MyScope(db *gorm.DB) *gorm.DB {
    return db.Where("name LIKE ?", "%gorm%")
}

// 在查询时调用 MyScope 方法
users := []User{}
db.Scopes(MyScope).Find(&users)

在上面的示例中,定义了一个名为 MyScope 的 Scope 方法,该方法为查询对象添加了一个 WHERE 子句(查询 Name 字段包含 "gorm" 子字符串的记录),然后在查询时使用 Scopes 方法将 MyScope 加入查询链条。

还可以定义多个 Scope 方法,可以实现类似于类的继承关系,每个方法只负责为查询对象添加自己的预设条件,便于构建复杂的查询。