Golang Go语言中 gorm 有办法在全局追加查询条件么,支持单表、多表。类似字段隔离。
请教大佬们,gorm 有办法在全局追加查询条件么,支持单表、多表。类似字段隔离。
Golang Go语言中 gorm 有办法在全局追加查询条件么,支持单表、多表。类似字段隔离。
4 回复
好像是有 hook 的。。。可以试试。
但是不知道你的实际情况是如何
更多关于Golang Go语言中 gorm 有办法在全局追加查询条件么,支持单表、多表。类似字段隔离。的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
但是 join 不知道咋使用
在Golang中使用GORM时,确实可以在全局范围内追加查询条件,以实现类似字段隔离的效果,无论是对单表还是多表查询。虽然GORM本身没有直接提供一个全局查询条件的配置,但可以通过以下几种方式实现类似的功能:
-
使用钩子(Hooks): GORM支持多种钩子,如
BeforeFind
、AfterFind
等。可以在模型中定义BeforeFind
钩子,在该钩子中追加全局查询条件。func (m *MyModel) BeforeFind(tx *gorm.DB) (err error) { tx = tx.Where("field_name = ?", "desired_value") return nil }
-
使用Scopes: Scopes是GORM中一种复用查询逻辑的方式。可以定义一个全局的Scope,然后在每次查询时应用它。
func MyScope(db *gorm.DB) *gorm.DB { return db.Where("field_name = ?", "desired_value") } // 在查询时使用 db.Scopes(MyScope).Find(&result)
-
中间件: 对于更复杂的场景,可以编写中间件来拦截和修改查询。这需要对GORM的底层有更深入的理解,通常不推荐除非必要。
通过上述方法,你可以在全局范围内统一追加查询条件,达到类似字段隔离的效果。选择哪种方式取决于你的具体需求和代码结构。