go - 如何在同一张桌子上混合 Has One 关系和 Has Many 关系
问题描述
从基本Has Many
关系开始
type Owner struct {
ID uint `gorm:"primary_key"`
Owned []Owned `gorm:"foreignkey:OwnerId"`
}
typ Owned struct{
ID uint `gorm:"primary_key"`
OwnerId uint
}
女巫给出了以下SQL数据库
Owner
ID
1
2
Owned
ID | OwnerId
1 | 1
2 | 1
3 | 1
4 | 2
5 | 2
我想FavoriteOwnedId
在所有者表中有一个列来引用我最喜欢的拥有行。应该是这样的:
Owner
ID | FavoriteOwnedId
1 | 2
2 | 5
Owned
ID | OwnerId
1 | 1
2 | 1
3 | 1
4 | 2
5 | 2
我想像下面这样的东西会让我得到它
owner := &Owner
db.Where("id = ?", someId).
Preload("FavoriteOwned").
Preload("Owned").
First(&owner)
但我找不到一种方法来编写必要的 gorm 标签以使其工作。我设法写Has One
或写Has Many
但不同时写它们。
任何想法 ?
解决方案
推荐阅读
- php - 为什么我的 PHP 嵌套 while 循环不起作用?
- c# - 如何使用按钮而不是滚动条制作 ScrollViewer?
- php - 如何使用 eloquent 将列与相关表列进行比较
- python - python哪个更好更快?先在 SQL 中进行数据争吵,然后在 pandas 中进行?
- java - 您如何从 Java 调用正在运行的 C# 应用程序中的方法?
- c# - 将字符串列表添加到字典中的不同键
- user-interface - 颤振中的 Transfrom.translate 与 Matrix4.translate
- java - 我是否需要在 Java 中关闭 IO 流?
- machine-learning - 使用 API 进行机器学习并存储结果
- shopify-app - 使用 Shopify 应用程序桥时,我在哪里获得 `shopOrigin` 的值?