Gorm Scopes 是 Gorm 框架提供的一种查询方式,可以用于在查询时定义预设的查询条件,方便复用,节省代码量。
使用 Gorm Scopes 的基本步骤如下:
-
在 Model 中定义 Scope 方法,方法的参数是一个 *gorm.DB 对象,返回值也是 *gorm.DB 对象,该方法表示为查询对象添加预设条件。
-
在查询时调用定义好的 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 方法,可以实现类似于类的继承关系,每个方法只负责为查询对象添加自己的预设条件,便于构建复杂的查询。