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)其它相关文章!