Heim  >  Artikel  >  Backend-Entwicklung  >  Wie speichere ich ein Array von Ganzzahlen als Gorm-Modell-Datentyp in PostgresQL?

Wie speichere ich ein Array von Ganzzahlen als Gorm-Modell-Datentyp in PostgresQL?

Linda Hamilton
Linda HamiltonOriginal
2024-11-09 08:05:02223Durchsuche

How to Store an Array of Integers as a Gorm Model Data Type in PostgresQL?

Array von Ganzzahlen als Gorm-Modelldatentyp integrieren

Das Problem

Gorm-Benutzer stehen beim Versuch, ein Array von Ganzzahlen innerhalb eines zu speichern, vor einem Hindernis einzelnes Feld einer PostgresQL-Datenbank mithilfe des Frameworks. Die Fehlermeldung „Panik: Ungültiger SQL-Typ (Slice) für Postgres“ entsteht aufgrund der Standardinkongruenz zwischen dem Slice-Datentyp von Gorm und der nativen Array-Unterstützung von PostgresQL.

Die Lösung

Zu beheben Um dieses Problem effektiv zu lösen, ist es notwendig, benutzerdefinierte Typen zu verwenden, die von der zugrunde liegenden Datenbankbibliothek bereitgestellt werden. In diesem Fall bietet das pq-Paket den Typ pq.Int64Array, der PostgresQL-Arrays nativ unterstützt. Der folgende Code veranschaulicht die ordnungsgemäße Verwendung:

<code class="go">type Game struct {
    gorm.Model
    GameCode    string
    GameName    string
    DeckType    pq.Int64Array `gorm:"type:integer[]"`
    GameEndDate string
}</code>

Wobei Game.DeckType den Typ mithilfe des Tags gorm:"type:integer[]" angibt und ihn effektiv als Array von Ganzzahlen innerhalb der PostgresQL-Datenbank definiert.

Beispieleinfügung

Nachdem Sie den benutzerdefinierten Typ festgelegt haben, können Sie mühelos ein Array von Ganzzahlen einfügen die Datenbank:

<code class="go">dt := []int64{1, 2, 3}

db.Create(&Game{GameCode: "xxx", GameName: "xxx", DeckType: pq.Int64Array(dt), GameEndDate: "xxx"})</code>

Dieser Code erstellt einen neuen Datensatz in der Spieltabelle, in der DeckType als Array von Ganzzahlen gespeichert wird.

Das obige ist der detaillierte Inhalt vonWie speichere ich ein Array von Ganzzahlen als Gorm-Modell-Datentyp in PostgresQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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