Go 多字段的LoadRelated

Go 多字段的LoadRelated,go,beego,Go,Beego,寻找一种方法,如何在多个引用的情况下加载相关项。 我有 及 当我在做 o := orm.NewOrm() o.LoadRelated(account, "Transactions") 它只在SourceAccount引用我的帐户时加载事务,但不返回帐户被称为TargetAccount的事务。 如果我这样更改订单: type Transactions struct { Id string `orm:"pk"` TargetAccount *Accoun

寻找一种方法,如何在多个引用的情况下加载相关项。 我有

当我在做

o := orm.NewOrm()
o.LoadRelated(account, "Transactions")
它只在SourceAccount引用我的帐户时加载事务,但不返回帐户被称为TargetAccount的事务。 如果我这样更改订单:

type Transactions struct {
    Id            string    `orm:"pk"`
    TargetAccount *Accounts  `orm:"rel(fk);"`
    SourceAccount *Accounts  `orm:"rel(fk);"`
}
它加载帐户被称为TargetAccount的事务。所以秩序很重要:)
是否有一种方法可以通过LoadRelated加载这两个文件?

查看,您可能想使用多个关系记录的depth参数swell,不,depth是另外一种东西(文档不太好理解它是什么)。他们使用FieldByIndex只获取结构中的第一个字段。因此,默认情况下没有办法做到这一点。可能我的架构是错误的,并且对同一个模型有两个或更多的引用不是一个好方法。哦,刚刚注意到->帐户链接到事务,事务链接回到帐户。若希望自动加载这些关系,那个么关系的循环性质就有问题。是的,在使用go时,我尽量远离更复杂的关系模式。。。无论如何,微服务很少需要复杂的模式。一项服务中的交易/分类账、另一项服务中的账户等……账户具有反向关系,这意味着在DB中,此方向没有关系。但交易同时与两个账户相关,在DB中有两个字段。例如,您将资金从Account1发送到Account2,因此TargetAccount是Account2,SourceAccount是Account1。然后我需要获取与Account1相关的所有事务。并且必须检查所有事务和这两个字段。LoadRelated可以完成这项工作,但只针对一个字段。我明白了,这只是每个帐户都会有任意数量的与之相关的事务,反之亦然。获取一个将加载另一个并再次返回->递归。这就是这种关系数据+贪婪地获取相关记录的问题。所以我对微服务的看法是:将数据库拆分为单独的服务,管理数据的子集,只在需要时加载所需内容,等等。。。
o := orm.NewOrm()
o.LoadRelated(account, "Transactions")
type Transactions struct {
    Id            string    `orm:"pk"`
    TargetAccount *Accounts  `orm:"rel(fk);"`
    SourceAccount *Accounts  `orm:"rel(fk);"`
}