Maison > Article > développement back-end > Comment stocker un tableau d'entiers en tant que type de données de modèle Gorm dans PostgresQL ?
Les utilisateurs de Gorm sont confrontés à un obstacle lorsqu'ils tentent de stocker un tableau d'entiers dans un champ unique d'une base de données PostgresQL utilisant le framework. Le message d'erreur « panique : type SQL invalide (slice) pour postgres » apparaît en raison de la non-concordance par défaut entre le type de données slice de Gorm et la prise en charge native des tableaux de PostgresQL.
À résoudre Pour résoudre efficacement ce problème, il est nécessaire d'utiliser des types personnalisés fournis par la bibliothèque de base de données sous-jacente. Dans ce cas, le package pq propose le type pq.Int64Array, qui prend en charge nativement les tableaux PostgresQL. Le code suivant illustre l'utilisation appropriée :
<code class="go">type Game struct { gorm.Model GameCode string GameName string DeckType pq.Int64Array `gorm:"type:integer[]"` GameEndDate string }</code>
Où Game.DeckType spécifie le type à l'aide de la balise gorm:"type:integer[]", le définissant effectivement comme un tableau d'entiers dans la base de données PostgresQL.
Après avoir établi le type personnalisé, vous pouvez facilement insérer un tableau de entiers dans la base de données :
<code class="go">dt := []int64{1, 2, 3} db.Create(&Game{GameCode: "xxx", GameName: "xxx", DeckType: pq.Int64Array(dt), GameEndDate: "xxx"})</code>
Ce code crée un nouvel enregistrement dans la table Game, où DeckType est stocké sous forme de tableau d'entiers.
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!