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.
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.
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!