Maison  >  Article  >  développement back-end  >  GORM : définir plusieurs colonnes avec la même clé étrangère

GORM : définir plusieurs colonnes avec la même clé étrangère

WBOY
WBOYavant
2024-02-13 11:45:161084parcourir

GORM : définir plusieurs colonnes avec la même clé étrangère

L'éditeur php Baicao vous pose aujourd'hui une question sur GORM : Comment utiliser la même clé étrangère pour définir plusieurs colonnes dans GORM ? Dans la conception de bases de données, nous devons parfois utiliser la même colonne de clé étrangère dans plusieurs tables, ce qui nous oblige à définir et configurer correctement GORM. Ensuite, nous présenterons en détail comment implémenter cette exigence dans GORM, ainsi que les considérations associées. Explorons ensemble ce sujet intéressant !

Contenu de la question

Je crée un projet Golang MySQL en utilisant GORM. J'ai une table appelée comptes avec des champs

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"`

Maintenant, je veux créer une table nommée Transactions avec des champs

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

Je ne sais pas comment le définir dans go Gorm ? Puis-je avoir deux champs avec des clés étrangères vers la même colonne d’une autre table ? Comment puis-je faire cela?

Solution

Est-ce utilisé ? Merci!

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"`
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer