GORM:使用相同的外键定义多个列

2024年 2月 13日 153.4k 0

gorm:使用相同的外键定义多个列

php小编百草今天为大家带来一个有关GORM的问题:如何在GORM中使用相同的外键定义多个列?在数据库设计中,有时我们需要在多个表中使用相同的外键列,这就需要我们在GORM中进行合适的定义和配置。接下来,我们将详细介绍如何在GORM中实现这一需求,以及相关的注意事项。让我们一起来探索这个有趣的话题吧!

问题内容

我正在创建一个使用 GORM 的 Golang MySQL 项目。我有一个名为accounts 的表,其中包含字段

ID uint `json:"id" gorm:"primary_key;auto_increment;not_null"`
Name string `json:"name"`
Company string `json:"company"`
GSTIN string `json:"gstin"`
AccountNo string `json:"accountNo" gorm:"unique"`
IFSC string `json:"ifsc"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`

登录后复制

现在我想制作一个名为带有字段的交易的表

ID uint `json:"id" gorm:"primary_key;auto_increment;not_null"`
Amount float64 `json:"amount"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
Date time.Time `json:"Date"`
PaymentMode string `json:"paymentMode"`
SourceId uint `json:"source"` ------>>>>> Want this to be AccountID foreign key
UTR string `json:"utr" gorm:"uniqueIndex"`
DestinationId uint `json:"to"` ------>>>>> Want this to be AccountID foreign key
Account Account

登录后复制

我不知道如何在 go Gorm 中定义它?我可以有两个带有外键的字段到另一个表的同一列吗?如何做到这一点?

解决方法

是用这个做的吗?谢谢!

type Debit struct {
ID uint `json:"id" gorm:"primary_key;auto_increment;not_null"`
Amount float64 `json:"amount"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
PaymentMode string `json:"paymentMode"`
SourceId uint `json:"sourceId"`
UTR string `json:"utr" gorm:"uniqueIndex"`
DestinationId uint `json:"destinationId"`
SourceAccount Account `gorm:"foreignKey:SourceId"`
DestinationAccount Account `gorm:"foreignKey:DestinationId"`
}

登录后复制

以上就是GORM:使用相同的外键定义多个列的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论