animals
,并且将映射到
type
类;如果是Dog
,它将映射到Dog
类。我想在gorm中设置类似的东西。
由于Gorm似乎没有一个模型的选项,我正在使用新的回调。
Cat
然后我在我的
Cat
函数中注册回调:default_scope
当我使用
func scopedSearch(scope *gorm.Scope) {
tablename := scope.TableName()
switch tablename {
case "table_using_sti":
scope.Search.Where("type = ?", "MyModelName")
default:
return
}
}
或使用main
模型搜索实例时,它似乎在起作用。这是处理它的正确方法吗?所有查询方法是否会尊重此范围,还是有更直接或更彻底的东西?
我认为您使用ScopedSearch回调功能的方法看起来适合根据表的类型列应用示波器。 另一个替代方法可以(不使用回调):
db.Callback().Query().Before("gorm:query").Register("my_plugin:before_query", scopedSearch)
然后在查询期间使用它:
,然后在查询时使用它:
db.First
您还可以检查db.Model(&MyModel{}).Where(...)