sql - 如何在gorm中创建双向多对多关系

标签 sql go go-gorm

根据the doc的自相关many2many如下

type User struct {
  gorm.Model
  Friends []*User `gorm:"many2many:user_friends"`
}
但我希望能够建模如下:
type User struct {
  gorm.Model
  Followings []*User `gorm:"many2many:user_relation"`
  Followers []*User `gorm:"many2many:user_relation"`
}
因此,以下过程运行良好。如果userA跟在userB之后,则userB可以在其关注者中看到userA

最佳答案

我可以通过以下标签实现它:

type User struct {
  gorm.Model
  Followings []*User `gorm:"many2many:user_relation;foreignKey:ID;joinForeignKey:UserA;References:ID;joinReferences:UserB"`
  Followers []*User `gorm:"many2many:user_relation;foreignKey:ID;joinForeignKey:UserB;References:ID;joinReferences:UserA"`
}

关于sql - 如何在gorm中创建双向多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63782715/

相关文章:

postgresql - 如何使用Gorm向现有列添加默认值

java - 如何在java中访问从sql函数获取的多个返回值

sql - 从左连接更新 Postgres

go - 根据 RFC2045 限制行长度的 Base64 编码

go - 在 golang 中结合时间和日期?

java - Hazelcast(Java)和 ETCD(golang)的区别/相似之处?

go - 如何创建单例数据库实例

go - 使用CloudSQL和Google App Engine在Gorm上部署Go后端时出现服务器错误500

mysql - BigQuery 根据最接近的时间戳和匹配值合并表

c# - 我收到此错误无法将字符串隐式转换为 system.data.datatable