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.
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
ähnelnIm 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"` }
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"` }
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!
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
注释中,您可以使用这些属性来处理外键:foreignKey
、references
、joinForeignKey
和 joinReferences
.
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!