🧷
GORMv2で外部キーが生成されない
原因は「所有側」で定義する必要があったこと。
外部キーを作成するのは「所有される側」だがGoの構造体定義上は「所有側」で定義する。
type User struct {
UserID string
// foreignKeyにはCreditCardで外部キーを作る列、referencesにはUserの参照列を指定する
CreditCards []CreditCard `gorm:"foreignKey:UserID;references:UserID"`
}
type CreditCard struct {
CreditCardID string
UserID string
}
// gorm.Modelを使う場合は↓でOK、公式ドキュメントより
type User struct {
gorm.Model
CreditCards []CreditCard
}
type CreditCard struct {
gorm.Model
UserID uint
}
参考:
Discussion