gorm(golang)和数据库,带有单个表继承“ type”列

问题描述 投票:0回答:1
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(...)
go go-gorm
1个回答
0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.