Maison > développement back-end > Golang > le corps du texte

Comment changer le nom de la colonne de la table de résultats de 'many' à 'many' dans gorm

PHPz
Libérer: 2024-02-10 13:45:08
avant
1038 Les gens l'ont consulté

如何在 gorm 中将结果表的列名从“多”更改为“多”

Lors de l'utilisation de gorm pour les opérations de base de données, nous pouvons parfois avoir besoin de changer le nom de colonne de la table de résultats de "many" à "many". Cela peut rendre notre code plus clair et plus facile à lire et améliorer la maintenabilité du code. Alors, comment implémenter cette fonction dans gorm ? Dans cet article, l'éditeur PHP Strawberry partagera avec vous une méthode simple et efficace pour vous aider à modifier facilement les noms des colonnes du tableau des résultats.

Contenu de la question

J'ai beaucoup joué avec nestjs en utilisant typeorm et maintenant j'apprends à utiliser golang et gorm. Je reconstruis un système dans nestjs pour Go et j'ai du mal à utiliser une relation plusieurs-à-plusieurs. Étant donné que je travaille avec une base de données déjà en production et remplie, je dois modéliser la structure de la même manière que les autres projets afin qu'il n'y ait pas de problèmes.

J'ai deux tables liées à bien des égards, ce sont playlists et genres, dans la base de données de production elles génèrent playlists_genres > table avec les champs suivants :

Notez que ces champs sont similaires à playlistsid et genresid

Dans le projet golang, les résultats m2m du tableau sont les suivants :

Veuillez noter que les champs générés sont différents de ce dont j'ai besoin, je dois générer des identifiants pour la base de données en production, qui sont playlistsid et genresid.

Mon code relationnel ressemble à ceci :

type playlist struct {
    id        int32     `json:"id" gorm:"primarykey;autoincrement:true"`
    status    bool      `json:"status" gorm:"not null;default:false"`
    createdat time.time `json:"createdat" gorm:"column:created_at;autocreatetime:milli;type:timestamp without time zone;default:now();not null"`
    updatedat time.time `json:"updatedat" gorm:"column:updated_at;autoupdatetime:milli;type:timestamp without time zone;default:now();not null"`

    genres        []genre             `json:"genres" gorm:"many2many:playlists_genres"`
}
Copier après la connexion

et

type Genre struct {
    ID          int32     `json:"id" gorm:"primaryKey;autoIncrement:true"`
    Name        string    `json:"name" gorm:"not null;type:varchar(255)"`

    Playlists    []Playlist         `json:"playlists" gorm:"many2many:playlists_genres"`
}
Copier après la connexion

J'ai beaucoup cherché et je n'ai pas trouvé de moyen de changer les noms de ces colonnes autre que de créer manuellement une table intermédiaire avec les colonnes avec les noms dont j'ai besoin et de les relier de une à plusieurs.

Pouvez-vous m'aider à résoudre ce problème ? Est-il possible de faire cela sans créer manuellement la table ? Merci!

Solution

Malheureusement, je pense que la seule façon d'atteindre votre objectif est de créer une structure appelée PlaylistGenre et de remplacer les noms de colonnes ici.
En utilisant la convention Gorm, vous ne pouvez opérer que sur les contraintes de clé étrangère créées dans la base de données. Il n'y a aucune chance d'écraser les noms de colonnes réels de la table de jointure créée automatiquement.
En gorm 注释中,您可以使用这些属性来处理外键:foreignKeyreferencesjoinForeignKeyjoinReferences.

Cependant, vous devez utiliser column, ce qui n'est pas possible ici.

Si vous avez besoin d'un exemple de cette approche, n'hésitez pas à me le faire savoir !

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!