So ändern Sie den Namen der Ergebnistabellenspalte in Gorm von „many' in „many'.

PHPz
Freigeben: 2024-02-10 13:45:08
nach vorne
1039 Leute haben es durchsucht

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

Wenn wir gorm für Datenbankoperationen verwenden, müssen wir manchmal den Spaltennamen der Ergebnistabelle von „many“ in „many“ ändern. Dadurch kann unser Code klarer und leichter lesbar werden und die Wartbarkeit des Codes verbessert werden. Wie implementiert man diese Funktion in Gorm? In diesem Artikel stellt Ihnen der PHP-Editor Strawberry eine einfache und effektive Methode vor, mit der Sie die Spaltennamen der Ergebnistabelle einfach ändern können.

Frageninhalt

Ich habe viel mit NestJS unter Verwendung von Typeorm gespielt und lerne jetzt, Golang und Gorm zu verwenden. Ich baue ein System in NestJS für Go neu auf und habe Probleme bei der Verwendung einer Viele-zu-Viele-Beziehung. Da ich mit einer Datenbank arbeite, die bereits in Produktion ist und gefüllt ist, muss ich die Struktur genauso modellieren wie bei anderen Projekten, damit es keine Probleme gibt.

Ich habe zwei Tabellen, die in vielerlei Hinsicht miteinander verbunden sind: Playlists und Genres. In der Produktionsdatenbank generieren sie Playlists_Genres > Tabelle mit den folgenden Feldern:

Beachten Sie, dass diese Felder playlistsid und genresid

ähneln

Im Golang-Projekt lauten die m2m-Ergebnisse der Tabelle wie folgt:

Bitte beachten Sie, dass sich die generierten Felder von meinen Anforderungen unterscheiden. Ich muss in der Produktion Bezeichner für die Datenbank generieren, nämlich playlistsid und genresid.

Mein Beziehungscode sieht so aus:

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"`
}
Nach dem Login kopieren

und

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"`
}
Nach dem Login kopieren

Ich habe viel nachgeschaut und keine andere Möglichkeit gefunden, die Namen dieser Spalten zu ändern, als manuell eine Zwischentabelle mit den Spalten mit den von mir benötigten Namen zu erstellen und sie von eins zu vielen zu verknüpfen.

Können Sie mir helfen, dieses Problem zu lösen? Ist dies möglich, ohne die Tabelle manuell zu erstellen? Danke!

Workaround

Leider denke ich, dass der einzige Weg, Ihr Ziel zu erreichen, darin besteht, eine Struktur namens PlaylistGenre zu erstellen und die Spaltennamen hier zu überschreiben.
Mithilfe der Gorm-Konvention können Sie nur mit Fremdschlüsseleinschränkungen arbeiten, die in der Datenbank erstellt wurden. Es besteht keine Möglichkeit, die tatsächlichen Spaltennamen der automatisch erstellten Join-Tabelle zu überschreiben.
Im gorm 注释中,您可以使用这些属性来处理外键:foreignKeyreferencesjoinForeignKeyjoinReferences.

Allerdings müssen Sie column verwenden, was hier nicht möglich ist.

Wenn Sie ein Beispiel für diesen Ansatz benötigen, lassen Sie es mich bitte wissen!

Das obige ist der detaillierte Inhalt vonSo ändern Sie den Namen der Ergebnistabellenspalte in Gorm von „many' in „many'.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!